楽天ブックス系APIのジャンル一覧を取得する

Python,雑談

本に関するWebサービスを考えていて、その一環で本に関する情報を公開しているAPIを探しています。簡単に使える楽天ブックス系APIから触ってみました。

環境

  • Windows 11
  • Python 3.10.0
  • pipenv 2021.5.29

注意事項

楽天のAPIはどれもそうなのですが、APIをコールする制限が設けられています。

最大1秒間に1回です。

そのため、1回コールするごとに1秒以上の待機が必要になります。

これを知らずにコールしまくったことがあり、しばらく使えなくなったことがあるのでご注意ください。

手順

楽天のAPIを使うのは非常に簡単です。登録すればすぐに使えるようになります。ここら辺、Amazonは見習ってほしいと思う。。。

リクエストURLが以下の通りです。

https://app.rakuten.co.jp/services/api/BooksGenre/Search/20121128?[parameter]=[value]…

このURLに対して、自分のアプリIDやら調べたい情報をパラメータに設定してリクエストすると、レスポンスがJSON形式で返ってきます。

リクエストURLへリクエストする

これはrequests を使って実現します。標準でもリクエストするライブラリが備わってるようですが、requests の方が簡単でした。

pipenv install requests

レスポンスの解析

楽天ブックスジャンル検索APIの場合は以下のフォーマットで返ってくるようです。

{ 
  "children": [ 
    { 
      "child": { 
        "booksGenreId": "001", 
        "booksGenreName": "本", 
        "genreLevel": 1 
      } 
    }, 
...
    { 
      "child": { 
        "booksGenreId": "007", 
        "booksGenreName": "雑誌", 
        "genreLevel": 1 
      } 
    } 
  ], 
  "current": { 
    "booksGenreId": "000", 
    "booksGenreName": "", 
    "genreLevel": 0 
  }, 
  "parents": [] 
}

全ジャンル

TBD

コード全容

参考

楽天ウェブサービス: 楽天ブックスジャンル検索API(version:2012-11-28) | API一覧
https://webservice.rakuten.co.jp/api/booksgenresearch/