楽天はいくつか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 件のコメント:
コメントを投稿