楽天APIを使用して楽天ランキング30位までを自動取得するPythonスクリプト

2015年3月20日

python-logo-master-v3-TMMacでPythonも何回目でしょうか。だいぶPythonに慣れてきましたか?今回は楽天APIを使用して、任意のカテゴリーの楽天ランキング30位までを自動取得するPythonスクリプトを実行してみましょう。楽天APIのデベロッパー登録は簡単なので説明は割愛します。

Pythonスクリプトのソース


#!/usr/bin/python2.7
# -*- coding: utf-8 -*-
import requests
import sys, codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout)

gen_input = input("catID input here: ")

url = "https://app.rakuten.co.jp/services/api/IchibaItem/Ranking/20120927?"

st_load = {
	"genreId": gen_input,
	"applicationId": あなたのID,
    }

r = requests.get(url, params=st_load)

res = r.json()

for i in res["Items"]:
	item = i["Item"]
	print u"順位: ",item["rank"],u"位"
	print u"商品名: ",item["itemName"]
	print u"URL: ",item["itemUrl"]
	print u"価格: ",item["itemPrice"], u"円", "\n"

このソースを写経してrakuapi.pyとして保存します。
ターミナルから実行するとカテゴリーID入力を求められますので、任意のカテゴリーIDを入力してエンターで表示されます。では、ソースの中身の解説をしていきましょう。

スクリプト本体の説明

今回はrequestsモジュールをインポートし、楽天APIのURLにリクエストを送信しています。リクエストを送るURLは使用するAPI毎に異なりますが、この中身を触るだけで概ね問題なく改造が可能だと思います。

url = "https://app.rakuten.co.jp/services/api/IchibaItem/Ranking/20120927?"

これがURLです。ただこれだけでは、アプリIDなどが入っていませんから意味をなしません。そのため、rという変数を作りURLに付加するコードを記述しています。

st_load = {
	"genreId": gen_input,
	"applicationId": あなたのID,
    }

r = requests.get(url, params=st_load)

この部分ですね。配列は順番が決まっているのでカテゴリーID+アプリIDでURLに結合します。

res = r.json()

for i in res["Items"]:
	item = i["Item"]
	print u"順位: ",item["rank"],u"位"
	print u"商品名: ",item["itemName"]
	print u"URL: ",item["itemUrl"]
	print u"価格: ",item["itemPrice"], u"円", "\n"

最後このソース部分で受け取った値をプリントしています。色々改変して楽天APIを叩いてみましょう。

主な著書

Django

Flask

Bottle