liquidjumper Python [Python3]PA-API5で取得する商品の並び順を変更する方法

[Python3]PA-API5で取得する商品の並び順を変更する方法

amazon_paapi5_sort_parameter_topimage

Amazonで取り扱っている商品の名前や価格など商品情報を取得できる、

Product Advertising API(PA-API)

過去記事で、Pythonを使ったPA-API5の初め方から、商品コードを指定した情報を取得方法と、キーワード検索で情報を取得する方法を紹介しました。

ただ、この記事のキーワード検索の項目で取得した結果の並び順が、想像した順番と違う為、データとして扱いにくいと感じる人も多いと思います。

PA-API5には、キーワード検索で取得できる結果の並び順が変更できるオプションパラメータがあり、これを設定すれば、普段アマゾンで買い物をする際に、検索した時と同じ順番で商品情報を得る事が可能になります。

そこで本記事では、Pythonを使ったPA-API5のキーワード検索する際、取得情報の並び順を変更する方法を紹介します。

Pythonを使ったPA-API5の使用方法は、過去記事で紹介してるので、まだご覧になってない方は是非。


SAMURAI ENGINEER Plus+

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 のキーワード検索で設定できるソートオプション


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” の結果を含め、もう少しバリエーションの少なさに不満があるのも正直な感想です。

もし、意図した順番で並べ替えたい場合は、取り敢えず商品情報を取得し、各商品の情報を個別に取得。その情報を元に改めて並べ替えする必要があるでしょう。

何れにせよ、デフォルト設定のままでで取得するより、遥かに扱いやすい状態で取得できるので、是非試してみてはいかがでしょう。





𝕏 ( 旧Twitter ) Facebook Pocket LINE はてブ

おすすめの関連記事



あわせてよく読まれている記事