【Python】
楽天APIを使用して楽天の情報をjson形式で受け取る方法
楽天商品検索APIで商品のデータを取得しよう
投稿日 2022/02/15 更新日 2022/02/15
こんにちは。当サイトの管理者「元木皇天」です。
今回はPythonで楽天API(楽天商品検索API)を使用して、楽天市場の商品情報を取得する方法について解説いたします。
環境
OS:MacOS Big Sur
Python:Ver 3.8.3
PyCharm:Ver 2020.2(Community Edition)
楽天ブックス総合検索API:Ver 2017-04-04
やりたいこと
Pythonで楽天商品検索APIを使用して楽天市場の商品情報を取得して使用する(今回は例として取得結果を整形してコンソールに表示することを行う)
楽天APIのアプリIDの取得
楽天APIを使用するためには、まずアプリIDというものの取得が必要です。
過去の記事にて取得方法を紹介していますので、以下のリンク先を参考にアプリIDを取得してください。
楽天商品検索APIを利用して検索する
アプリIDが取得できたら、実際にPythonで楽天API(楽天商品検索API)を使用してみましょう。
なお、今回は簡単にAPIを実行できるようにするため、Requestsというライブラリを使用します(Pythonの開発環境を作成したときにAnacondaをインストールしていればこのライブラリは使えると思います)。
楽天商品検索APIを実行するコードは以下の通りです(今回は例として「Pyrhon」に関連する商品の一覧を取得します)。
import requests # 楽天商品検索API (BooksGenre/Search/)のURL url = "https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706" # URLのパラメータ param = { # 前手順で取得したアプリIDを設定する "applicationId" : "XXXXXXXXXXXXX", "keyword" : "Python", "format" : "json" } # APIを実行して結果を取得する result = requests.get(url, param)
コードについて軽く補足説明しますと、変数paramの「keyword」に検索したいワードを設定しています。
また、「format」に「json」を指定することで、APIの結果をjson形式でで受け取ることができるようになります(「xml」を指定すればxml形式で受け取ることもできます)。
取得した結果を出力json形式にデコードして出力すると以下のようなデータが得られていることがわかります。
コード
### 省略 ### # APIを実行して結果を取得する result = requests.get(url, param) # jsonにデコードして出力する json_result = result.json() print(json_result)
取得結果(大量に取得できるので1件目のみ表示しています)
{ "GenreInformation": [], "Items": [ { "Item": { "affiliateRate": 3, "affiliateUrl": "", "asurakuArea": "群馬県/埼玉県/千葉県/東京都/神奈川県/新潟県/山梨県/長野県/岐阜県/静岡県/愛知県/三重県/滋賀県/宮城県/福島県/茨城県/栃木県", "asurakuClosingTime": "12:00", "asurakuFlag": 1, "availability": 1, "catchcopy": "【楽天ブックスならいつでも送料無料】", "creditCardFlag": 1, "endTime": "", "genreId": "101937", "giftFlag": 0, "imageFlag": 1, "itemCaption": "Bill Lubanovic 鈴木 駿 オライリー・ジャパンニュウモンパイソンスリーダイニハン ビル ルバノビック スズキ ハヤオ 発行年月:2021年03月22日 予約締切日:2021年01月27日 ページ数:800p サイズ:単行本 ISBN:9784873119328 原著第2版 第1部 Pythonの基礎(Pyの味見/データ:型、値、変数、そして名前/数値 ほか)/第2部 Pythonの実践(データの自在な操作/カレンダーとクロック/ファイルとディレクトリ ほか)/付録(初心者プログラマのためのハードウェア、ソフトウェア入門/Python3のインストール/話は変わりまして:非同期処理 ほか) データサイエンスやウェブ開発、セキュリティなど、さまざまな分野で人気を獲得してきているPython。本書は、ベストセラーの6年ぶりの改訂版で、プログラミング初級者を対象としたPythonの入門書です。プログラミングおよびPythonの基礎から、ウェブ、データベース、ネットワーク、並行処理といった応用まで、実践を見据えたPythonプログラミングをわかりやすく丁寧に説明します。Python3.9に対応し、f文字列などの新機能も追加され大幅にボリュームアップしました。Pythonの機能をひと通り網羅し、リファレンスとしても便利です。 本 パソコン・システム開発 プログラミング その他 パソコン・システム開発 その他", "itemCode": "book:20271780", "itemName": "入門Python3 第2版 [ Bill Lubanovic ]", "itemPrice": 4180, "itemUrl": "https://item.rakuten.co.jp/book/16627214/", "mediumImageUrls": [ { "imageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9328/9784873119328.jpg?_ex=128x128" } ], "pointRate": 1, "pointRateEndTime": "", "pointRateStartTime": "", "postageFlag": 0, "reviewAverage": 5, "reviewCount": 1, "shipOverseasArea": "", "shipOverseasFlag": 0, "shopAffiliateUrl": "", "shopCode": "book", "shopName": "楽天ブックス", "shopOfTheYearFlag": 0, "shopUrl": "https://www.rakuten.co.jp/book/", "smallImageUrls": [ { "imageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9328/9784873119328.jpg?_ex=64x64" } ], "startTime": "", "tagIds": [], "taxFlag": 0 } } ] }
次の項では上記のような取得結果を整形してコンソールに出力する処理を記載していますので、そちらも合わせてご確認ください。
検索結果の表示
最後に、前項で取得した楽天商品検索APIの結果を使用してみたいと思います。
今回は例として、取得した結果の中から商品名(itemName)と値段(itemPrice)を取り出して、コンソール上に出力する処理を実装してみます。
import requests # 楽天商品検索API (BooksGenre/Search/)のURL url = "https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706" # URLのパラメータ param = { # 取得したアプリIDを設定する "applicationId" : "XXXXXXXXXXXXX", "keyword" : "Python", "format" : "json" } # APIを実行して結果を取得する result = requests.get(url, param) # jsonにデコードする json_result = result.json() # 整形した結果を格納する辞書型変数を宣言 dict_result = {} # 取得結果を1件ずつ取り出す for i in range(0, len(json_result["Items"])): item = json_result["Items"][i]["Item"] # keyに「商品名(itemName)」、valueに「値段(itemPrice)」を設定する dict_result[item["itemName"]] = item["itemPrice"] # 整形した結果を1件ずつ出力する for itemName, itemPrice in dict_result.items(): print(itemName, itemPrice, "円")
出力すると以下のような結果が出力されます。
入門Python3 第2版 [ Bill Lubanovic ] 4180 円 Python[完全]入門 [ 松浦健一郎 ] 3190 円 Python 1年生 体験してわかる!会話でまなべる!プログラミングのしくみ [ 森 巧尚 ] 2178 円 Pythonスタートブック増補改訂版 いちばんやさしいパイソンの本/バージョン3に完全対 [ 辻真吾 ] 2750 円 Python2年生 スクレイピングのしくみ 体験してわかる!会話でまなべる! [ 森 巧尚 ] 2420 円 Pythonでつくる ゲーム開発 入門講座 [ 廣瀬豪 ] 2948 円 Python基礎&実践プログラミング プロへのスキルアップ+プロジェクトサンプル [ マグヌス・リー・ヘトランド ] 3960 円 ゲーム作りで楽しく学ぶ Pythonのきほん [ 森 巧尚 ] 2849 円 Python3年生 機械学習のしくみ 体験してわかる!会話でまなべる! [ 森 巧尚 ] 2420 円 スラスラ読める Pythonふりがなプログラミング 増補改訂版 [ リブロワークス ] 2178 円 独習Python【電子書籍】[ 山田祥寛 ] 3300 円 12歳からはじめるゼロからのPythonゲームプログラミング教室 Windows7/8/8.1/10対応 [ 大槻有一郎 ] 2420 円 詳細!Python3入門ノート [ 大重美幸 ] 2948 円 Pythonではじめる Webサービス&スマホアプリの書きかた・作りかた [ クジラ飛行机 ] 3520 円 Pythonクローリング&スクレイピング[増補改訂版] -データ収集・解析のための実践開発ガイドー [ 加藤 耕太 ] 3608 円 PythonでExcel、メール、Webを自動化する本 [ 中嶋英勝 ] 2398 円 Pythonではじめる機械学習 scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎 [ Andreas C. Muller ] 3740 円 退屈なことはPythonにやらせよう ノンプログラマーにもできる自動化処理プログラミング [ Al Sweigart ] 4070 円 実践 Pythonによるデータベース入門 MySQL,MongoDB,CouchDBの基本操作からアプリプログラミングまで [ 藤野 巖 ] 3630 円 徹底攻略 基本情報技術者の午後対策 Python編 第2版 [ 株式会社わくわくスタディワールド 瀬戸美月 ] 2530 円 仕事と遊びに役立つPython活用術【電子書籍】 2530 円 実践Django Pythonによる本格Webアプリケーション開発【電子書籍】[ 芝田将 ] 3850 円 独学プログラマー Python言語の基本から仕事のやり方まで [ コーリー・アルソフ ] 2420 円 文系でも数式なしのPython×Excelで稼ぐ力を上げる! [ 日比野 新 ] 1760 円 【新品】スッキリわかるPython入門 国本大悟/著 須藤秋良/著 フレアリンク/監修 2640 円 新・明解Pythonで学ぶアルゴリズムとデータ構造 [ 柴田 望洋 ] 2640 円 株とPython─自作プログラムでお金儲けを目指す本【電子書籍】[ 宮部 保雄 ] 1980 円 Pythonエンジニア育成推進協会監修 Python実践レシピ【電子書籍】[ 鈴木 たかのり ] 2970 円 【中古】 Pythonスタートブック 増補改訂版 いちばんやさしいパイソンの本 バージョン3に完全対応!/辻真吾(著者) 【中古】afb 1815 円 プロフェッショナルPython ソフトウェアデザインの原則と実践【電子書籍】[ Dane Hillard ] 3300 円
PyCharmで実行すると以下のような感じです。
まとめ
Pythonで楽天APIを使用するためには
1. アプリIDを取得する
2. APIを実行する(Requestsライブラリ使用を推奨)
3. 取得結果を整形して情報を使用する
あと、補足情報として今回PyCharm上で実際に私がコーディングしたものを参考にのせておきます。