楽天はいくつかAPIを提供していて(API一覧)、楽天市場のランキングもAPIで取得できる。今回はPythonで楽天市場のランキングを取得してみる。
環境
WSL2(Ubuntu20.04)。
$ lsb_release -dr Description: Ubuntu 20.04.3 LTS Release: 20.04 $ python3 -V Python 3.8.10 $ pip3 show requests Name: requests Version: 2.25.1 ...
ランキングを取得する事前準備
APIの使用にはアプリケーションIDが必要なので事前に取得しておく。アプリケーションIDはRakuten Webserviceでアプリを登録することで取得できる。
今回は楽天市場のランキングを取得したいので、いくつかあるAPIのうち楽天商品ランキングAPIを使用する。このAPIではランキングのジャンルを指定できるので、チョコレートのランキングを取得してみる。
ジャンル指定にはジャンルIDが必要で、ジャンルIDは楽天市場ジャンル検索APIで取得できる。ここではAPIテストフォームを使ってジャンルIDを取得する。ジャンルの階層構造の最上位ジャンルIDが0になっているようで、テストフォームでgenreIdに0を指定してGETボタンを押すとJSON(デフォルト)で最上位のジャンル一覧を取得できる。
その一覧に「スイーツ・お菓子」があるので、そのジャンルIDである551167で再度検索するとチョコレートのジャンルIDが201136であることがわかる。このジャンルIDでランキングを取得する。
楽天商品ランキングを取得する
楽天商品ランキングAPIで楽天市場のチョコレートのランキングを取得する。Pythonコードは以下の通り。
import os
import json
import requests
# APIのエンドポイント
ENDPOINT = 'https://app.rakuten.co.jp/services/api/IchibaItem/Ranking/20170628'
RAKUTEN_APP_ID = 'Rakuten Webserviceで取得したアプリケーションID'
def show_ranking(api_res):
"""ランキング順位とその商品名を表示
"""
res = json.loads(api_res)
items = res.get('Items')
for item in items:
rank = item.get('rank')
item_name = item.get('itemName')
print(f'{rank}位 {item_name}\n')
def get_ranking(genre_id):
params = {
'applicationId': RAKUTEN_APP_ID,
'format': 'json',
'formatVersion': 2,
'genreId': genre_id
}
r = requests.get(url=ENDPOINT, params=params)
assert r.status_code == 200, f'status code: {r.status_code}'
show_ranking(r.text)
def main():
get_ranking(genre_id='551167')
if __name__ == '__main__':
main()
以下のようにランキング一覧が取得できる。
1位 ポイント10倍 送料無料 お歳暮 御歳暮 ギフト クリスマス プレゼント お年賀 ヨックモック お菓子 スイーツ 詰め合わせYCD-30 サンク デリス(5種45個入り)洋菓子 クッキー 手土産 個包装 内祝い 焼き菓子 お祝い お返し お取り寄せ 誕生日 チョコ 帰省土産 のし 缶 2位 送料無料 リンツ Lindt チョコレート リンドール 23個入り テイスティングセット| ギフト 洋菓子ギフト かわいい お菓子 スイーツ プレゼント 可愛い 手土産 内祝い 内祝いお返し お礼 リンツチョコ 誕生日 クリスマス X'mas 冬ギフト 退職 職場 3位 お歳暮 ギフト HTA-30AWN 送料無料 タルト・フリュイ・アソート S 秋冬限定お礼 誕生日 プレゼント お菓子 洋菓子 手土産 焼き菓子 出産 内祝 贈り物 お返し 退職 引越し 入学 卒業 定年 退職 ご挨拶 御歳暮 ...
取得できる商品の名称は一般的な商品名ではなく、楽天市場の各店舗が設定した名称になっている。APIでは他にも年代や性別も指定できるが、ジャンルIDと同時に指定できない。
0 件のコメント:
コメントを投稿