Amazonの検索結果にある商品情報には、2つの重要な情報が含まれています。それらは、商品の販売実績と顧客レビュー、およびその商品を販売するショップに対する評価です。そして、これらの情報をさらに活用することで、価格トラッカーやP&L市場価値など、より広範なアプリケーションに展開することができます。
この章では、Amazonの商品スクレイパーを作成し、取得したデータをGoogle Sheetsに保存する方法を共有します。この章の終わりまでに、gspreadモジュールをインストールする方法と、HTML内のデータ要素を見つける場所を学ぶことができます。
目次:Amazon商品スクレイパーの作成(Selenium、BeautifulSoup、Easy2Digital APIを使用)
- Selenium、BeautifulSoupモジュールのインポート
- 商品検索スクレイパーのプロトタイプを作成する
- 複数のページの検索結果をスクレイプする
- 取得したデータセットをGoogleシートに保存する
- Amazon商品スクレイパーの完全なPythonスクリプト
Amazon商品スクレイパー – Selenium、BeautifulSoup、およびgspreadモジュールのインポート
PythonスクリプトでBeautifulSoupを使用してWebサイトを訪問することはできません。エラーが発生します。代わりに、seleniumを使用してスムーズに商品データを取得できます。これらの2つのモジュールをインポートするプロセスは、以前に他のボットのスクリプトで行ったプロセスと同じです。
また、このスクリプトは、シートに商品情報を取得して保存するだけではありません。それはまた、スケジュールでデータを自動的に更新し、競合他社のマーケティング情報と製品価格を追跡することを目的としています。価格トラッカーについては、別の記事をリリースします。そのため、GoogleシートAPIを使用してデータを管理することをお勧めします。ここでは、gspreadを使用することをお勧めします。それは、ものを簡単にするからです。
GoogleシートAPIを作成し、サービスアカウントを設定するには、他の記事を参照してください。以前に記事をリリースしました。詳細については、この記事をご覧ください。
Easy2Digital Google Sheets APIは、Google APIに接続して取得したデータを管理するのがより簡単です。まず、無料のEasy2Digital APIトークンを申請する必要があります。
次に、Google APIサービスアカウントからダウンロードしたJSONキーの名前をコピーして、Easy2Digital API googleJsonparameterに接続されたスクリプトに貼り付けます。
詳細については、APIドキュメントを参照してください
Amazon 商品スクレイパー – 商品検索スクレイパーのプロトタイプを作成する
検索クエリを使用して、任意の商品の情報を検索できます。基本的には、Amazon 商品スクレイパーのプロトタイプは、検索している商品に関係なく、どの Amazon マーケットでも使用できます。
1. Amazon 検索クエリ URL 構造
URL には、SERP を制御する 2 つのパラメータがあることに気付くかもしれません。1 つはキーワードに続く k で、もう 1 つはページに続くページ番号です。
https://www.amazon.com/s?k=ring+camera&page=2
そのため、使用後に 2 つの変数を作成できます。1 つは検索しているキーワードを表し、もう 1 つは動的にループしてより多くのページを取得するためのものです。
query = "ring+camera"
page = "&page="
2. SERP 内で商品情報ブロックを検索する
商品タイトルを右クリックして、インスペクト機能を使用できます。どの要素が商品情報ブロック全体を取得できるかを確認できます。ブロックには、ASIN、価格、タイトル、URL、レビュー数など、取得する必要のあるすべての主要な商品情報が含まれます。たとえば、これは以前に共有した Web スクレイピングと似ています。
ご覧のように、すべての情報は div というタグに含まれています。そして、データコンポーネントタイプと呼ばれるタグにも含まれています。したがって、このようにコードを起草できます。これは、1 ページ目をスクレイピングするためのものです。
driver.get("
ご覧の通り、すべての情報はdivにあり、データコンポーネントタイプというタグに含まれています。そのため、このようにコードを作成できます。これは、1ページ目のスクレイピングに使用されます。
driver.get("https://www.amazon.com/s?k=query”)
soup = BeautifulSoup(driver.page_source, 'html.parser')
results = soup.find_all('div',{'data-component-type': 's-search-result'})
3. データタイプを選択し、特定のスクレイピングを行う
P&L計算機と接続するためにASINは取得する必要があるキーエレメントです。この点については、別の記事で説明します。
ASIN値は、data-asinというタグにあります。したがって、変数を作成して、attrsを使用して各製品のASIN番号を取得できます。
asins = item.attrs['data-asin']
次に、製品タイトルはHTMLのh2にあります。Pythonコードは以下のようになります。ただし、前導空白(先頭の空白)と後導空白(末尾の空白)を削除するために、テキストの後にstrip()を使用することをお勧めします。
try:
title = item.h2.a.text.strip()
except Exception as e:
raise None
価格設定は、競合他社のプロモーションによって動的であり、変更される可能性があるため、価格トラッカーで別の重要な要素です。 Amazon製品スクレイパーでは、このコーディングを使用して価格を取得できます。ただし、後でフィルタリングおよび市場価値の計算を行うために、通貨シグナルを削除することをお勧めします。これにより、データがGoogleシートの数値形式であることが保証されます。
try:
price_parent = item.find('span','a-price')
price = price_parent.find('span','a-offscreen').text.replace('$','')
except Exception as e:
price_parent = '0'
price = '0'
Amazon製品スクレイパー-検索結果の複数ページをスクレイピングする
Amazon SERPの1ページ目には、平均22個の製品があります。製品の市場パフォーマンスと機会を理解するには十分ではない場合、複数のページをスクレイプする必要があります。幸い、それは複雑ではなく、前に共有したWebページネーションスクレイパーに似ています。
まず、特定のデータフェッチループよりも上位のループを作成する必要があります。変数Xを作成できます。
次に、範囲でページ数を設定できます。ただし、最後のページはy – 1である必要があります。 たとえば、ここでは最後のページが3であるため、最後のページは2であることを意味します。
for x in range (1,3):
driver.get("https://www.amazon.com/s?k="+query+page+str(x))
soup = BeautifulSoup(driver.page_source, 'html.parser')
results = soup.find_all('div',{'data-component-type': 's-search-result'})
for item in results:
asins = item.attrs['data-asin']
最後に、AmazonのURL構造を知っているので、URLリクエストを更新する必要があります。次のようになります。
driver.get("https://www.amazon.com/s?k="+query+page+str(x))
取得したデータをGoogleスプレッドシートに保存する
ここで、データをフィードしてGoogleシートに保存する準備が整いました。 “POST”メソッドを使用し、Easy2Digital APIパラメーターに取得したデータと特定のシートタブとセル位置を2つの変数として追加する必要があります。
Amazon Product Scraperの完全なPythonスクリプト
Amazon Product Scraperの完全なバージョンを取得したい場合は、「Chapter 16」というメッセージを追加してニュースレターに登録してください。すぐにスクリプトがメールボックスに送信されます。
第16章-Amazon Product Scraper Using Selenium、BeautifulSoup、およびEasy2Digital APIをお楽しみいただければ幸いです。そうした場合は、以下にリストされているいずれかのことを行って、常に私たちのチャンネルを支援してください。
- PayPal (paypal.me/Easy2digital)を通じて弊社チャンネルをサポートおよび寄付を行う
- Easy2Digital YouTubeチャンネルの登録と通知ベルをオンにする。
- Easy2Digital Facebookページをフォローしていいね!を押す
- ハッシュタグ#easy2digitalを使用して、ソーシャルネットワーク上で記事を共有する
- Easy2Digitalの最新記事、動画、割引コードを受け取るために、週刊ニュースレターに登録する
- www.patreon.com/louisludigitalを通じて、独占的な特典をお楽しみいただくための月額会員に登録する