【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の結果をjsonで取得して出力

参考文献
楽天ブックス総合検索APIのサイト
Python ライブラリ Requests

楽天APIのアプリIDの取得

楽天APIを使用するためには、まずアプリIDというものの取得が必要です。

過去の記事にて取得方法を紹介していますので、以下のリンク先を参考にアプリIDを取得してください。

過去記事:【楽天API】楽天APIを使用できるようにする手順

楽天商品検索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で実行すると以下のような感じです。

楽天商品検索APIの結果をjsonで取得する

まとめ

Pythonで楽天APIを使用するためには
1. アプリIDを取得する
2. APIを実行する(Requestsライブラリ使用を推奨)
3. 取得結果を整形して情報を使用する

あと、補足情報として今回PyCharm上で実際に私がコーディングしたものを参考にのせておきます。

楽天商品検索APIの結果をjsonで取得するコード

参考文献・おすすめ文献