pythonで楽天apiを実行する方法
楽天の会員登録をする
これは登録画面に沿って登録をするだけです。
登録画面のurlを載せます。
楽天のアプリIDを発行する
アプリURLはhttp://localhost.com
で登録しました。
やり方を調べたところ、自分のgithubのurlを入れるというのも見つけました。
apiを試していたところでは、このurlがlocalhostだったことで困ったことは起きませんでした。
apiを実行するためのプログラムを作成する
RakutenApiというクラスを作成して、継承して使用します。
RakutenApi ├─ Api1 └─ Api2
RakutenApiクラスは個別の共通のパラメータを入れたり、urlやparamsを生成するためのメソッドを用意しています。
import requests class RakutenApi(object): root = 'https://app.rakuten.co.jp/services/api' api_path = '' common_params = { 'applicationId': 'xxxxxx', # アプリID 'affiliateId': 'xxxxxxx.xxx.xx.xxxxx', # アフィリエイトID 'format': 'json', 'formatVersion': 2, } def get_url(self): return self.root + self.api_path def gen_params(self, params): cp_params = self.common_params.copy() cp_params.update(params) return cp_params def get(self): pass
ジャンル検索apiを作成する
RakutenApiクラスを継承したIchibaGenre
クラスを作成します。
↓のドキュメントを見つつ作成しています。 https://webservice.rakuten.co.jp/api/ichibagenresearch/
以下のコードを追加して、実行すると検索できます。
class IchibaGenre(RakutenApi): api_path = '/IchibaGenre/Search/20140222' genreId = 0 def get(self): params = self.gen_params({'genreId': self.genreId}) r = requests.get(self.get_url(), params) return r.text def main(): ichiba_genre = IchibaGenre() ichiba_genre.genreId = 200162 r = ichiba_genre.get() print(r) if __name__ == '__main__': main()
どうでもよいですが、classとdefとmainの間を2行空けるとキレイです。
実行結果
市場ジャンルを取得したときの結果です。(一部抜粋)
基本はchildren
を見て、更に絞り込みをします。
{ "parents": [], "current": { "genreId": 200162, "genreName": "本・雑誌・コミック", "genreLevel": 1 }, "brothers": [ { "genreId": 101240, "genreName": "CD・DVD", "genreLevel": 1 }, { "genreId": 100804, "genreName": "インテリア・寝具・収納", "genreLevel": 1 } ], "children": [ { "genreId": 101266, "genreName": "小説・エッセイ", "genreLevel": 2 }, { "genreId": 208663, "genreName": "資格・検定", "genreLevel": 2 } ], "tagGroups": [ { "tagGroupName": "限定特典", "tagGroupId": 1001050, "tags": [ { "tagId": 1011603, "tagName": "楽天限定特典付き", "parentTagId": 0 }, { "tagId": 1011604, "tagName": "店舗共通特典付き", "parentTagId": 0 } ] } ] }