yuhtaryouko
@yuhtaryouko (Yuta Kato)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

GASでAmazonの価格を抽出してスプレッドシートに書き込みたい

解決したいこと

GASでAmazonの価格を抽出してスプレッドシートに書き込みたいです。
調べたところParserというライブラリを使うといいということが分かり、コードを書いてみたのですが
謎の数字を引っ張ってきていて、ちんぷんかんぷんです。

※Amazonがスクレイピング(機械的な連続アクセス?)禁止ということは理解しています。
そのうえでの質問であることをご理解くださいませ。

発生している問題・エラー

function myFunction(){
  let response = UrlFetchApp.fetch('https://www.amazon.co.jp/%E3%83%9D%E3%82%B1%E3%83%A2%E3%83%B3%E3%82%AB%E3%83%BC%E3%83%89%E3%82%B2%E3%83%BC%E3%83%A0-%E3%82%BD%E3%83%BC%E3%83%89%EF%BC%86%E3%82%B7%E3%83%BC%E3%83%AB%E3%83%89-%E5%BC%B7%E5%8C%96%E6%8B%A1%E5%BC%B5%E3%83%91%E3%83%83%E3%82%AF-%E7%99%BD%E7%86%B1%E3%81%AE%E3%82%A2%E3%83%AB%E3%82%AB%E3%83%8A-BOX/dp/B0B1HWM5LW/ref=sr_1_2?creative=6339&keywords=%E7%99%BD%E7%86%B1%E3%81%AE%E3%82%A2%E3%83%AB%E3%82%AB%E3%83%8A&linkCode=ure&qid=1660408198&sr=8-2');
  

  let fromText = '<span class="a-price-whole">';
  let toText = '</span>';

  let price = Parser
  .data(response.getContentText())
  .from(fromText)
  .to(toText)
  .iterate();
  
  let sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange("A1").setValue(price)

}

このコードを実行することで、カートBOXの価格を取得したいのですが、なぜか「758」という数字が抽出されます。
この質問投稿時ですと、8200が抽出されてほしいです。

image.png

自分で試したこと

ソースコード内を「758」で検索すると、全然関係なさそうな文字列がいくつか引っかかるのでそれもまた分かりません。
image.png

よろしくお願いいたします。

0

1Answer

以下の実行結果の1件目が取得されています。
image.png
探すと以下の箇所みたいです。
image.png

現在商品価格が出ていないので取得できていなさそうです。
image.png
商品価格が表示されていれば正しく取得できそうです。

0Like

Comments

  1. @yuhtaryouko

    Questioner

    返信ありがとうございます。

    なるほど…ただ私の場合はそこにちゃんと価格が表示されている(「すべての出品を表示」という記載がされていない)のですが、それでも取得はできないものなんでしょうか?

    しかし758がどこを抽出しているのか分かったので、間違ってはいないということが分かっただけでも大変ありがたいです。

Your answer might help someone💌