Amazonで取り扱っている商品の名前や価格など商品情報を取得できる、
Product Advertising API(PA-API)
過去記事で、Pythonを使ったPA-API5の初め方から、商品コードを指定した情報を取得方法と、キーワード検索で情報を取得する方法を紹介しました。
ただ、この記事のキーワード検索の項目で取得した結果の並び順が、想像した順番と違う為、データとして扱いにくいと感じる人も多いと思います。
PA-API5には、キーワード検索で取得できる結果の並び順が変更できるオプションパラメータがあり、これを設定すれば、普段アマゾンで買い物をする際に、検索した時と同じ順番で商品情報を得る事が可能になります。
そこで本記事では、Pythonを使ったPA-API5のキーワード検索する際、取得情報の並び順を変更する方法を紹介します。
Pythonを使ったPA-API5の使用方法は、過去記事で紹介してるので、まだご覧になってない方は是非。
|
PA-API5 デフォルト設定でキーワード検索をした結果
まずは、ソートオプションの設定をせずに、デフォルトの状態でキーワード検索した結果を確認してみましょう。
キーワード検索 amazon_api.search_items に取得個数のオプション[item_count]を設定し、キーワード「テレビ」で実行すると。
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) #オプションパラメータ item_count で結果の個数を設定
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)
何も設定しないでキーワード検索した場合、MarketplaceとSearchIndexの組み合わせに対するデフォルトのソートオプションでソートされた結果で取得されました。
正直 新しいのか、古いのか、評価が高いのか、人気なのか 良くわからない並びで取得されました。
【Amazon.co.jp 限定】TCL 32S516E 32V型 ハイビジョン Amazon Prime Video対応 スマートテレビ(Android TV) 外付けHDDで裏番組録画対応 2021年モデル 黒
¥32,800
アイリスオーヤマ 24V型 液晶テレビ 24WB10 ハイビジョン 裏番組録画対応 外付HDD録画対応
¥18,800
アイリスオーヤマ 40V型 液晶テレビ LUCA LT-40C420W (ホワイト) フルハイビジョン 裏番組録画対応 外付けHDD録画対応
¥28,082
アイリスオーヤマ 55V型 4K対応 液晶テレビ 55UB10P 裏番組録画対応
¥50,800
|
PA-API5 のキーワード検索で設定できるソートオプション
Amazon.co.jpでキーワード検索する場合、右上の「商品の並べ替え」の項目で、結果の並び順を変更する事があると思います。
この並び順の項目と、 “ほぼ” 同様の結果が、PA-API5 のキーワード検索でも取得することが可能です。
PA-API5 のキーワード検索で使える、ソートオプションは以下の6種類あり、
並び順を説明の項目の内容で変更できます。
SortBy Value | 説明 |
---|---|
AvgCustomerReviews | 顧客レビューの平均値で結果をソート |
Featured | 注目のアイテムが上位に表示されるようにソート |
NewestArrivals | 新着順でソート |
Price:HighToLow | 最も高価なものから最も安価なものへと結果を並べ替えます |
Price:LowToHigh | 最も安価なものから最も高価なものへと結果を並べ替えます |
Relevance | 関連性の高い項目が上位になるように結果をソート |
Amazon.co.jpの「商品の並べ替え」の項目と対応させると
価格の安い順番 = Price:LowToHigh
価格の高い順番 = Price:HighToLow
レビューの評価順 = AvgCustomerReviews
最新商品 = NewestArrivals
となります。
ただ問題は、「アマゾンおすすめ商品」と想像した “Featured” が、全く別物だということ。
何かの 間違い? バグ? 注目アイテムって何? とさえ思ってしまうほど、結果に不満が…
あと、“Relevance” は、デフォルト設定と同じ結果のようです。
|
ソートオプションを設定してキーワード検索
上記で紹介したソートオプションを実際に使ってみましょう。
ソートオプションの使い方は、
キーワード検索 amazon_api.search_items に、ソートオプションのパラメータ [sort_by] を設定するだけ。
前述のキーワード「テレビ」のコードに [sort_by] を追加して実行すると。
from amazon.paapi import AmazonAPI
ACCESS_KEY = "ABCDEFGHIJKL4567890Q" #アクセスキー
SECRET_KEY = "ABcdefgHijKlmn12opQrsTu3456789" #シークレットキー
ASSOCIATE_ID = "abcdefghijklmn-22" #アソシエイトID
COUNTRY = "JP"
keyword = "テレビ" #キーワード「テレビ」
sort_word = "AvgCustomerReviews"
amazon_api = AmazonAPI(ACCESS_KEY, SECRET_KEY, ASSOCIATE_ID, COUNTRY )
searchItems = amazon_api.search_items(item_count = 4 ,keywords=keyword ,sort_by = sort_word)
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)
ソートオプションのパラメータを “AvgCustomerReviews” で キーワード検索すると、ユーザー評価が高い順に商品が取得されました。
ソニー 50V型 液晶 テレビ ブラビア XRJ-50X90J 4Kチューナー 内蔵 BRAVIA XR Google TV (2021年モデル)大画面でゲームを楽しむのにお勧め 4K/120fps対応
¥153,800
LG 48型 4Kチューナー内蔵 有機EL テレビ OLED 48CXPJA Alexa 搭載 2020 年モデル
¥122,552
ソニー 49V型 液晶 テレビ ブラビア KJ-49X9500H 4Kチューナー 内蔵 Android TV (2020年モデル)
¥116,000
東芝 55V型 液晶テレビ レグザ 55Z740X 4Kチューナー内蔵 外付けHDD タイムシフトマシン対応 (2020年モデル)
¥145,253
Amazon.co.jpでも同じキーワードで「テレビ」で検索、並び替えの項目を「レビューの評価順」にすると、同様の結果になるのが確認できます。
ソートオプションのパラメータを “NewestArrivals” で キーワード検索すると、新商品が並びました。
シャープ 42V型 液晶 テレビ AQUOS 4T-C42DJ1 4K チューナー内蔵 Android TV (2021年モデル) ブラック+シャープ ウェラブルネックスピーカー AN-SC1-S AQUOSサウンドパートナー Amazon Alexa搭載 Bluetooth 生活防水仕様
¥107,300
シャープ 43V型 液晶 テレビ AQUOS 4T-C43DN2 4K チューナー内蔵 Android TV (2021年モデル)+シャープ ウェラブルネックスピーカー AN-SC1-S AQUOSサウンドパートナー Amazon Alexa搭載 Bluetooth 生活防水仕様
¥129,100
シャープ 43V型 液晶 テレビ AQUOS 4T-C43DL1 4K チューナー内蔵 Android TV (2021年モデル)+シャープ ウェラブルネックスピーカー AN-SC1-S AQUOSサウンドパートナー Amazon Alexa搭載 Bluetooth 生活防水仕様
¥122,300
シャープ 48V型 有機EL テレビ AQUOS OLED 4T-C48CQ1 4K チューナー内蔵 Android TV Medalist S1 搭載 2020年モデル+シャープ ウェラブルネックスピーカー AN-SC1-S AQUOSサウンドパートナー Amazon Alexa搭載 Bluetooth 生活防水仕様
¥195,300
Amazon.co.jpでも、並び替えの項目を「新商品」にすると、同じく新商品が並びます。
試しに “Featured” でキーワード検索 をすると、以下の様な結果に。何故に注目の商品なのか甚だ疑問。
「アマゾンおすすめ商品」を期待して使用すると残念な結果になるので気をつけてください。
ポータブルデジタルテレビ5インチデジタルテレビATSCTVカーキャンプキッチン用ポータブルデジタルTVUSプラグ110‑220V
¥11,119
修理キット、SwitchLite用スイッチに使用するのが簡単な修理分解キット
¥1,619
修理ツールセット、SwitchLite用スイッチの実用的な分解キット修理
¥1,629
時計ドライバーキット、時計クロスドライバープロフェッショナルデザインジュエリー作りのためのプレミアム素材(クロス1.4mm)
¥759
|
まとめ:キーワード検索で並び順を変えるにはソートオプション[sort_by]
Pythonを使ったPA-API5のキーワード検索する際に、取得情報の並び順を変更する方法を紹介しました。
キーワード検索 amazon_api.search_items に、ソートオプション[sort_by] を設定するだけで、順番を変更できるので非常に簡単にですね。
ただ、“Featured” の結果を含め、もう少しバリエーションの少なさに不満があるのも正直な感想です。
もし、意図した順番で並べ替えたい場合は、取り敢えず商品情報を取得し、各商品の情報を個別に取得。その情報を元に改めて並べ替えする必要があるでしょう。
何れにせよ、デフォルト設定のままでで取得するより、遥かに扱いやすい状態で取得できるので、是非試してみてはいかがでしょう。
|
|
|
BTOパソコンの草分け的ブランドFRONTIER(フロンティア) 3DCG/動画編集/ゲーム用途に合わせてCPUやGPUなどパーツを自由に選べてコスパにもこだわる方にオススメ。 |
|
|
|
|
|