【楽天ブックスAPI】Pythonで楽天ブックスの商品情報を抽出→CSVに出力

この記事で解決するお悩み
  • 楽天ブックス系APIを使って、楽天ブックスの商品情報を
  • 楽天ブックス系APIを使って、人気の書籍・CDを調べたい
  • 楽天ブックス系APIを使って、書籍・CDごとにアフィリエイトURLを作成したい

本記事では、Pythonを用いて「楽天ブックス総合検索API」使って、売れ筋の書籍・CDの商品情報の抽出する方法を徹底解説していきます。

楽天ブックス系APIとは?

楽天ブックスの商品情報を取得することが可能なAPIのことです。誰でも無料で利用でき、非常に簡易的なリクエストを送るだけで、豊富な商品情報を返してくれます。キーワードでの商品検索のほか、ジャンル別、在庫状態等の絞り込みでの検索も可能です。

今回は楽天ブックス系APIの中でも最も汎用性の高い、「楽天ブックス総合検索API」の使い方を解説していきます。特に、「キーワード」、「ジャンル」、「ISBN/JANコード」を指定して、売れ筋の楽天ブックス商品情報を抽出するPythonコードを紹介します。コピペで簡単に流用が可能です。

今回抽出する商品情報一覧

タイトル、著者名、ISBNコード/JANコード、商品説明文、アフィリエイトURL、税込価格、在庫状況、商品画像URL、出版社名、出版日/発売日、レビュー平均、レレビュー件数

事前準備:アプリIDの登録

アプリIDの登録がまだの方(アプリケーションID・アフィリエイトIDをまだお持ちでない方)は、こちらで楽天APIについての総まとめ、アプリID登録の仕方を紹介しているのでぜひ参考にしてみてください。

Pythonコード

早速Pythonコードを紹介していきます。まずは、検索したいように入力パラメータ(11~16行目、ハイライトした箇所)を入れていきましょう。

import requests
import pandas as pd
import json
from pandas import json_normalize


#urlの作成
base_url = 'https://app.rakuten.co.jp/services/api/BooksTotal/Search/20170404?' #ランキングAPIのベースとなるURL

item_parameters = {
            'applicationId': '自分のアプリケーションID', #アプリID
            'affiliateId' : '自分のアフィリエイトID', #アフィリエイトID
            'keyword' : 'テスト', #検索キーワード
            'booksGenreId' : '001', #楽天ブックスジャンルID
            #'isbnjan' : 'XXX', #ISBNコード/JANコード
            'sort' : 'sales' #ソート
}


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

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

#必要な情報だけ抽出
df_pickup = df.loc[:, \
                   ['Item.title', \
                    'Item.author', \
                    'Item.isbn', \
                    'Item.jan', \
                    'Item.itemCaption', \
                    'Item.affiliateUrl', \
                    'Item.itemPrice', \
                    'Item.availability', \
                    'Item.largeImageUrl', \
                    'Item.publisherName', 
                    'Item.salesDate', \
                    'Item.reviewAverage', \
                    'Item.reviewCount']]

#項目の日本語辞書作成
rename_dic = \
                {'Item.title':'タイトル',\
                 'Item.author':'著者名',\
                 'Item.isbn':'ISBNコード',\
                 'Item.jan':'JANコード',\
                 'Item.itemCaption':'商品説明文',\
                 'Item.affiliateUrl':'アフィリエイトURL',\
                 'Item.itemPrice':'税込価格',\
                 'Item.availability':'在庫状況',\
                 'Item.largeImageUrl':'商品画像URL',\
                 'Item.publisherName':'出版社名',\
                 'Item.salesDate':'出版日/発売日',\
                 'Item.reviewAverage':'レビュー平均',\
                  'Item.reviewCount':'レビュー件数'}

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

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

アプリID・アフィリエイトID

ご自身の、アプリIDとアフィリエイトIDを入力してください。(こちらで発行可能です)

キーワード・ジャンルID・ISBNコード/JANコード

こちらは、3つのうち、いずれかが指定されていることが必須です。また、「ISBNコード/JANコード」が入力されている時、「キーワード」および「ジャンルID」は自動的に無効となります。

サンプルコードにはkeywordに「テスト」というワードが入っていますが、任意のキーワードに変更するか、指定しない場合はコメントアウト(’keyword’の前に”#”を入力)してください。

楽天ブックスのジャンルIDはこちらで紹介しているので参考にしてみてください。書籍のほか、CDやPC周辺機器など、大きいジャンルから細かいジャンルまで指定が可能です。

ISBNコード/JANコードはサンプルコード上ではコメントアウトしていますが、必要に応じて入力してください。

ソート

以下から、並び順を選択できます。サンプルコードには売れ筋順を出力できるよう”sales”が入力されています。

  • standard:標準(デフォルト)
  • sales:売れている
  • +releaseDate:発売日(古い)
  • -releaseDate:発売日(新しい)
  • +itemPrice:価格が安い
  • -itemPrice:価格が高い
  • reviewCount:レビューの件数が多い
  • reviewAverage:レビューの評価(平均)が高い

データの出力について

最終的に抽出した商品情報をCSVに出力できる仕様になっています。試しにサンプルコードに出力した商品情報リストを確認してみましょう。

このように、商品情報がきちんと抽出できているのがわかります。在庫状況についてですが、数字の意味はそれぞれ、下記の通りなので参考までに。

  • 1:在庫あり
  • 2:通常3~7日程度で発送
  • 3:通常3~9日程度で発送
  • 4:メーカー取り寄せ
  • 5:予約受付中
  • 6:メーカーに在庫確認

まとめ

今回紹介した方法は、あくまで楽天ブックス総合検索APIの使い方の一例であり、最も基本的な使い方です。検索条件をカスタマイズしたり、抽出する商品情報などをカスタマイズしたりしてオリジナルのAPIリクエストを作ることも可能です。公式HPに、楽天ブックス総合検索APIの入力・出力パラメータの一覧が載っているので参考にしてみてください。

コメントを残す

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