Amazonで取り扱っている商品の名前や価格など商品情報を取得できる、
Product Advertising API(PA-API)
過去記事で、Pythonを使ったPA-API5のキーワード検索で商品情報を取得する方法を紹介しました。
しかし、オプションを設定せずにデフォルトのまま、キーワード検索を行うと、アマゾンで扱われる商品のすべてのカテゴリーが検索対象となる為、意図した検索結果が受け取れない可能性があります。
Amazon.co.jpのサイトで商品を探す際は、探している対象にあわせてカテゴリーを指定し、検索結果の精度を高め、目的の商品を見つけやすくしていると思いますが、Product Advertising API(PA-API)でも同様に、カテゴリーを指定してキーワード検索をする事ができます。
そこで、本記事では、Product Advertising API(PA-API)でキーワード検索する際に、オプションでカテゴリーを指定する方法を紹介します。
|
アマゾンの商品カテゴリを示すSearchIndex
PA-API5 でキーワード検索は、次の様なコードで商品情報を取得できます。
amazon_api.search_items(keywords="キーワードー")
ただし、このデフォルト設定のコードで実行するとすべてのカテゴリーが対象となる為、対象外の商品情報まで取得してしまい、目的外の商品まで取得されてしまう可能性が。
amazon_api.search_items には、商品カテゴリーを指定できるオプションパラメータがあります。
search_index
このパラメータ search_index に、検索インデックスの値を指定すると、検索対象となる商品カテゴリーを設定可能になります。
日本のアマゾン Amazon.co.jp で商品カテゴリーを指定する場合のインデックス値
search_index に指定する、検索インデックスの値は、Amazonの対象国によって異なります。
検索インデックスの値の一覧は、各国のロケールリファレンスを参照してください。
Amazon.co.jp の検索インデックス一覧
日本のアマゾン Amazon.co.jp で指定可能な検索インデックスの一覧です。
Search Index | 表示名称 |
---|---|
All | すべてのカテゴリー |
AmazonVideo | プライム・ビデオ |
Apparel | 衣料品・アクセサリー |
Appliances | 大型家電 |
Automotive | カー&バイク用品 |
Baby | ベビー&マタニティ |
Beauty | ビューティー |
Books | 日本の書籍 |
Classical | クラシカル |
Computers | コンピュータ&アクセサリー |
CreditCards | クレジットカード |
DigitalMusic | デジタルミュージック |
Electronics | エレクトロニクス&カメラ |
EverythingElse | その他のすべて |
Fashion | ファッション |
FashionBaby | ファッション > キッズ・ベビー |
FashionMen | ファッション > メンズ |
FashionWomen | ファッション > レディース |
ForeignBooks | 英語書籍 |
GiftCards | ギフトカード |
GroceryAndGourmetFood | フード&ビバレッジ |
HealthPersonalCare | ヘルス&パーソナルケア |
Hobbies | ホビー |
HomeAndKitchen | キッチン・家庭用品 |
Industrial | インダストリアル&サイエンティフィック |
Jewelry | ジュエリー |
KindleStore | Kindleストア |
MobileApps | アプリ・ゲーム |
MoviesAndTV | 映画・テレビ |
Music | ミュージック |
MusicalInstruments | 楽器 |
OfficeProducts | 文具・事務用品 |
PetSupplies | ペット用品 |
Shoes | シューズ&バッグ |
Software | ソフトウェア |
SportsAndOutdoors | スポーツ |
ToolsAndHomeImprovement | DIY、ツール&ガーデン |
Toys | おもちゃ |
VideoGames | コンピュータ・ビデオゲーム |
Watches | 時計 |
|
PythonのコードでSearchIndexを使用する
search_index は、amazon_api.search_items にオプションパラメータを追加するだけで使用できます。
キーワード「ガンダム」で、デフォルト設定のままキーワード検索すると。
from amazon.paapi import AmazonAPI
ACCESS_KEY = "ABCDEFGHIJKL4567890Q" #アクセスキー
SECRET_KEY = "ABcdefgHijKlmn12opQrsTu3456789" #シークレットキー
ASSOCIATE_ID = "abcdefghijklmn-22" #アソシエイトID
COUNTRY = "JP"
keyword = "ガンダム" #検索キーワード
amazon_api = AmazonAPI(ACCESS_KEY, SECRET_KEY, ASSOCIATE_ID, COUNTRY )
searchItems = amazon_api.search_items(item_count = 4 ,keywords=keyword )
print(searchItems['data'][0].item_info.title.display_value) #検索結果の1番目の商品アイテムの表示タイトル
print(searchItems['data'][0].offers.listings[0].price.display_amount)
print(searchItems['data'][1].item_info.title.display_value) #検索結果の2番目の商品アイテムの表示タイトル
print(searchItems['data'][1].offers.listings[0].price.display_amount)
print(searchItems['data'][2].item_info.title.display_value) #検索結果の3番目の商品アイテムの表示タイトル
print(searchItems['data'][2].offers.listings[0].price.display_amount)
print(searchItems['data'][3].item_info.title.display_value) #検索結果の4番目の商品アイテムの表示タイトル
print(searchItems['data'][3].offers.listings[0].price.display_amount)
「ガンダム」に関連する、さまざまなカテゴリーの商品が取得されました。
デフォルト設定で取得されたデータは、商品の対象範囲が広すぎて、目的の商品を見つけにくい。
機動戦士ガンダム サンダーボルト 第1話(セル版)
¥550
機動戦士ガンダム THE ORIGIN ルウム編 V 激突 ルウム会戦
¥407
機動戦士ガンダムAGE Blu-ray Box (特装限定版)
¥35,200
第22話 帰還
¥220
それでは、同じコードに検索インデックス「Books」を指定したオプションパラメータ search_index を追加して、キーワード検索してみましょう。
from amazon.paapi import AmazonAPI
ACCESS_KEY = "ABCDEFGHIJKL4567890Q" #アクセスキー
SECRET_KEY = "ABcdefgHijKlmn12opQrsTu3456789" #シークレットキー
ASSOCIATE_ID = "abcdefghijklmn-22" #アソシエイトID
COUNTRY = "JP"
keyword = "ガンダム" #検索キーワード
searchindex = "Books" #商品カテゴリーを日本の書籍に指定
amazon_api = AmazonAPI(ACCESS_KEY, SECRET_KEY, ASSOCIATE_ID, COUNTRY )
searchItems = amazon_api.search_items(item_count = 4 ,keywords=keyword ,search_index= searchindex)
print(searchItems['data'][0].item_info.title.display_value) #検索結果の1番目の商品アイテムの表示タイトル
print(searchItems['data'][0].offers.listings[0].price.display_amount)
print(searchItems['data'][1].item_info.title.display_value) #検索結果の2番目の商品アイテムの表示タイトル
print(searchItems['data'][1].offers.listings[0].price.display_amount)
print(searchItems['data'][2].item_info.title.display_value) #検索結果の3番目の商品アイテムの表示タイトル
print(searchItems['data'][2].offers.listings[0].price.display_amount)
print(searchItems['data'][3].item_info.title.display_value) #検索結果の4番目の商品アイテムの表示タイトル
print(searchItems['data'][3].offers.listings[0].price.display_amount)
今度は、ガンダムの書籍関連した商品情報だけを取得できました。
機動戦士クロスボーン・ガンダムX-11(1) (角川コミックス・エース)
¥634
機動戦士ガンダム サンダーボルト(19) (ビッグコミックススペシャル)
¥770
機動戦士ガンダム0083 REBELLION(17) (角川コミックス・エース)
¥634
機動新世紀ガンダムX Re:Master Edition(3) (角川コミックス・エース)
¥634
|
まとめ:商品カテゴリーを指定してキーワード検索する場合はSearchIndexを設定
アマゾンの、Product Advertising API(PA-API)で、対象商品のカテゴリーを指定してキーワード検索する方法を紹介しました。
カテゴリー指定方法:
amazon_api.search_items のオプションパラメータ search_index でカテゴリーを指定する。
SearchIndex使用時の注意点:
SearchIndexの値(検索インデックス)は、Amazonの対象国によって異なるので、国外も視野に入れたサイト・アプリ等を開発する場合は注意が必要。
PA-API5のキーワード検索で意図したカテゴリーじゃない商品情報ばかり取得されて困ってる方の参考になればと思います。
|
Pythonクローリング&スクレイピング[増補改訂版] -データ収集・解析のための実践開発ガイド
Pythonによるクローリング・スクレイピングの入門から実践までを解説した書籍です。2017年の初版から内容をアップデート、新ライブラリの解説などを追加した増補改訂版です。
|
|
BTOパソコンの草分け的ブランドFRONTIER(フロンティア) 3DCG/動画編集/ゲーム用途に合わせてCPUやGPUなどパーツを自由に選べてコスパにもこだわる方にオススメ。 |
|
|
|
|
|