【楽天API】Pythonで人気商品のアフィリエイトURLを取得→CSVに出力

この記事で解決するお悩み
  • 楽天APIを使って、人気の商品情報を知りたい
  • 楽天APIを使って、リアルタイムの商品ランキングを知りたい
  • 楽天APIを使って、商品ごとにアフィリエイトURLを作成したい

本記事では、「楽天商品ランキングAPI」とPythonを使って、リアルタイムランキングアフィリエイトURLを含む商品情報の抽出の仕方を徹底解説していきます。

はじめに

楽天APIとはRakuten Webserviceが提供するAPIのことです。非常に簡易的なリクエストを送るだけで、豊富な商品情報を返してくれます。
Rakuten Webserviceには、ランキング検索APIを始め30種類近くのAPIを公開しており、検索パラメータも柔軟な印象で、とても使い勝手がいいです。

今回は、その中でも楽天商品ランキングAPIを使って、楽天商品のリアルタイムランキングと、アフィリエイトリンクを取得していこうと思います。Pythonのサンプルコードも紹介しています。最終的には、CSVとして出力できる仕様となっているので参考にしてみてください。「リアルタイムで商品ランキングを知りたい!」、「アフィリエイトURLを取得したい」というブロガー必見の内容です。

事前準備

まずは、「アプリIDの登録」を行なっておきましょう。楽天アカウントを持っていれば非常に簡単にアプリIDとアフィリエイトIDが発行できます。こちらで、楽天アプリIDの登録方法、および楽天APIについての総まとめを解説しているので参考にしてみてください。

STEP1. リクエストを送ってJSONを受け取る

では、早速コード紹介していきます。まずはリクエストを送ってJSONで受け取るまでを確認していきましょう。

import requests
import json


#urlの作成
urlbase = 'https://app.rakuten.co.jp/services/api/IchibaItem/Ranking/20170628?' #ランキングAPIのベースとなるURL

parameters = {
            'applicationId': '自分のアプリID', #アプリID
            'affiliateId' : '自分のアフィリエイトID', #アフィリエイトID
            'genreId' : '100316', #ジャンルID(例えばドリンク・酒であれば100316)
            'period' : 'realtime' #ランキング集計期間
}


#jsonデータの取得
r = requests.get(urlbase, params = parameters)
jsondata = r.json()
print(json.dumps(jsondata, indent=2,ensure_ascii=False))

出力を見てみると、JSONとして受け取れているのが確認できます。

11行目(ハイライトした箇所)のジャンルIDを変えることで、任意のジャンルのリアルタイムランキングを調べることができます、楽天ジャンルIDについては、こちらの記事でジャンルID一覧とPythonでの調べ方を紹介しているので、ぜひ参考にしてみてください。

STEP2. JSON→DataFrameに変換する

続いて受け取ったJSONをCSVに出力するべく、一旦PandasのDataFrameを使ってデータを整形していきます。今回は、Pandasの「json_normalize」というモジュールを使って、一発でJSONをDataFrameに格納します。「json_normalize」共通のキーをもつ辞書のリストをDataFrameに変換してくれるので非常に便利です。

import pandas as pd
from pandas import json_normalize


#jsondata内のItemsにアクセスした後に、データフレームに格納
df = json_normalize(jsondata['Items'])
df.head()

出力はこのうようになっており、きちんとDateFrameに変換できました。

STEP3. データを整形してCSVに出力

STEP2.のままの状態でもいいのですが、CSVに出力させる情報を絞って、整理していきたいと思います。今回は、「ランキング順位」、「商品名」、「キャッチコピー」、「アフィリエイトURL」、「アフィリエイト利用率」、「商品説明」、「価格」、「レビュー平均」をピックアップしていきます。

#必要な情報だけ抽出
df_pickup = df.loc[:, \
                   ['Item.rank', \
                    'Item.itemName', \
                    'Item.catchcopy', \
                    'Item.affiliateUrl', \
                    'Item.affiliateRate', \
                    'Item.itemCaption', \
                    'Item.itemPrice', \
                    'Item.reviewAverage']]

#項目の日本語辞書作成
rename_dic = \
                {'Item.rank':'ランキング順位',\
                 'Item.itemName':'商品名',\
                 'Item.catchcopy':'キャッチコピー',\
                 'Item.affiliateUrl':'アフィリエイトURL',\
                 'Item.affiliateRate':'アフィリエイト利用率',\
                 'Item.itemCaption':'商品説明',\
                 'Item.itemPrice':'価格',\
                  'Item.reviewAverage':'レビュー平均'}

#項目名変更
df_pick_rename = df_pickup.rename(columns = rename_dic)

#データフレームCSVに出力
df_pick_rename.to_csv('rakuten.csv', encoding='utf_8_sig')

項目(columns)もわかりやすいように日本語に変換し、最後CSVとして出力させます。
出力したCSVをGoogleスプレッドシートで開いてみると、30位までのランキングとアフィリエイトURLの抽出ができたことを確認できます。

まとめ

今回紹介した方法は、あくまで楽天APIの基本的な使い方です。検索するときのパラメータをカスタマイズしたり、出力される情報の抽出などを変更したりしてオリジナルのAPIリクエストを作ってみてください。楽天API一覧のページに、各APIの入力・出力パラメータの一覧が載っているので参考までにリンク貼っておきます。

https://webservice.rakuten.co.jp/document/

コメントを残す

メールアドレスが公開されることはありません。