はじめに
楽天APIというものがあったのでpythonを使ってジャンル一覧を取得してみました!
準備
楽天のジャンルAPIのドキュメントには、以下のような形でapplicationIdの実行が必須である。
- リクエストURL(REST/JSON形式の場合)
https://app.rakuten.co.jp/services/api/IchibaGenre/Search/20140222?
applicationId=[アプリID]&
genreId=0
applicationId取得方法
こちらのサイトへアクセスし、楽天会員のID, passwordを利用してログインする。
ログイン後、右上のアプリID発行ボタンから、アプリ名・URLを入力し、新規アプリ作成をクリック。
次のページに遷移し、以下が3つ発行される。
- アプリID/デベロッパーID
- application_secret
- アフィリエイトID
※今回利用するのは発行されたアプリID
pythonでコーディング
第一階層目のジャンル取得
コード
import requests
RAKUTEN_GENRE_API_URL = 'https://app.rakuten.co.jp/services/api/IchibaGenre/Search/20140222'
params = {
'applicationId': 'アプリID',
'formatVersion': 2,
'genreId': 0,
}
r = requests.get(RAKUTEN_GENRE_API_URL, params=params)
item_data = r.json()
- formatVersionについて
formatVersion=1 の場合:
配列データに関して、以下の様にデータが返る。
{"items": [
{"item": {
"itemName": "a",
"itemPrice": 10
}},
{"item": {
"itemName": "b",
"itemPrice": 20
}}
]}
formatVersion=2 の場合:
下記のように、配列中の重複するオブジェクトが省略される。
{"items": [
{
"itemName": "a",
"itemPrice": 10
},
{
"itemName": "b",
"itemPrice": 20
}
]}
取得結果
以下のように39種類のジャンルが取得できた。
{'brothers': [],
'children': [{'genreId': 100371, 'genreLevel': 1, 'genreName': 'レディースファッション'},
{'genreId': 551177, 'genreLevel': 1, 'genreName': 'メンズファッション'},
{'genreId': 100433, 'genreLevel': 1, 'genreName': 'インナー・下着・ナイトウェア'},
{'genreId': 216131, 'genreLevel': 1, 'genreName': 'バッグ・小物・ブランド雑貨'},
{'genreId': 558885, 'genreLevel': 1, 'genreName': '靴'},
{'genreId': 558929, 'genreLevel': 1, 'genreName': '腕時計'},
{'genreId': 216129, 'genreLevel': 1, 'genreName': 'ジュエリー・アクセサリー'},
{'genreId': 100533, 'genreLevel': 1, 'genreName': 'キッズ・ベビー・マタニティ'},
{'genreId': 566382, 'genreLevel': 1, 'genreName': 'おもちゃ'},
{'genreId': 101070, 'genreLevel': 1, 'genreName': 'スポーツ・アウトドア'},
{'genreId': 562637, 'genreLevel': 1, 'genreName': '家電'},
{'genreId': 211742, 'genreLevel': 1, 'genreName': 'TV・オーディオ・カメラ'},
{'genreId': 100026, 'genreLevel': 1, 'genreName': 'パソコン・周辺機器'},
{'genreId': 564500, 'genreLevel': 1, 'genreName': 'スマートフォン・タブレット'},
{'genreId': 565004, 'genreLevel': 1, 'genreName': '光回線・モバイル通信'},
{'genreId': 100227, 'genreLevel': 1, 'genreName': '食品'},
{'genreId': 551167, 'genreLevel': 1, 'genreName': 'スイーツ・お菓子'},
{'genreId': 100316, 'genreLevel': 1, 'genreName': '水・ソフトドリンク'},
{'genreId': 510915, 'genreLevel': 1, 'genreName': 'ビール・洋酒'},
{'genreId': 510901, 'genreLevel': 1, 'genreName': '日本酒・焼酎'},
{'genreId': 100804, 'genreLevel': 1, 'genreName': 'インテリア・寝具・収納'},
{'genreId': 215783, 'genreLevel': 1, 'genreName': '日用品雑貨・文房具・手芸'},
{'genreId': 558944, 'genreLevel': 1, 'genreName': 'キッチン用品・食器・調理器具'},
{'genreId': 200162, 'genreLevel': 1, 'genreName': '本・雑誌・コミック'},
{'genreId': 101240, 'genreLevel': 1, 'genreName': 'CD・DVD'},
{'genreId': 101205, 'genreLevel': 1, 'genreName': 'テレビゲーム'},
{'genreId': 101164, 'genreLevel': 1, 'genreName': 'ホビー'},
{'genreId': 112493, 'genreLevel': 1, 'genreName': '楽器・音響機器'},
{'genreId': 101114, 'genreLevel': 1, 'genreName': '車・バイク'},
{'genreId': 503190, 'genreLevel': 1, 'genreName': '車用品・バイク用品'},
{'genreId': 100939, 'genreLevel': 1, 'genreName': '美容・コスメ・香水'},
{'genreId': 100938, 'genreLevel': 1, 'genreName': 'ダイエット・健康'},
{'genreId': 551169, 'genreLevel': 1, 'genreName': '医薬品・コンタクト・介護'},
{'genreId': 101213, 'genreLevel': 1, 'genreName': 'ペット・ペットグッズ'},
{'genreId': 100005, 'genreLevel': 1, 'genreName': '花・ガーデン・DIY'},
{'genreId': 101438, 'genreLevel': 1, 'genreName': 'サービス・リフォーム'},
{'genreId': 111427, 'genreLevel': 1, 'genreName': '住宅・不動産'},
{'genreId': 101381, 'genreLevel': 1, 'genreName': 'カタログギフト・チケット'},
{'genreId': 100000, 'genreLevel': 1, 'genreName': '百貨店・総合通販・ギフト'}],
'current': {'genreId': 0, 'genreLevel': 0, 'genreName': ''},
'parents': [],
'tagGroups': []}
第二階層以下のジャンルは、上位階層の'genreId'をAPIに与えてあげることで取得可能
おわりに
楽天のAPIで簡単にジャンルの取得ができました。
参考