LoginSignup
0
1

More than 3 years have passed since last update.

Pythonで楽天APIを使った商品情報の取得

Posted at

はじめに

楽天ショップのカテゴリを取得した前回の
Pythonで楽天APIを使ったジャンル一覧リストの作成 に引き続き、
今回は取得したカテゴリを使って商品を取得してみた。

サイトの調査

前回取得したカテゴリをベースとした処理にしたため、特に参考にしたサイトはなし。
楽天APIの仕様で、各ジャンル同一条件での検索で最大3000件までしか取得できないらしい。
※検索結果のソート順を設定したら、もう少し取得できるかもしれない

前回ジャンルを取得した結果、階層が5つまでだったので、階層が5つである前提として
楽天ショップの各ジャンルの商品を取得する。
※階層が2つまでだったら、階層2のジャンルのアイテムを取得するようにした

■前回取得したジャンルリスト 

GenreID:1 GenreName:1 ・・・ GenreID:5 GenreName:5
510915 ビール・洋酒 ・・・ 567652 ノンアルコール

取得するだけだったら、わざわざ書かなくても良い気がしたけど、
エラーとかあって、数十分、数時間後に止まっていることがあったので
一応、メモとして記載

どういうことかというと、

やったこと

APIをたたく際のパラメータにページ設定があり、これが1~100までの
範囲で設定ができ、各ページごとに30アイテムを取得することが出来る
※すべてのジャンルに3000アイテムあるわけではない為、数百件しかないジャンルも存在した。

約17000件のジャンルに対して、1ジャンル最大100回APIを実行し商品情報を取得した。

test.py

# 検索用パラメータにページNoを反映
item_param["page"] = ***ページ番号***

処理を走らせておくと、数時間に一回APIのエラーが返ってくることがあった為、
処理失敗時に再度APIを実行するようにエラー時には以下のループ機能を実装した。

処理に失敗した場合は、『数秒空けて、再度同条件でAPIを実行する』を成功するまで
ひたすら繰り返す。

ただし、それでも、エラーになり終了していることがあった
※調べたところ、ConnectionResetError が発生していた模様

また、商品数が3000件ないジャンルの時は、100ページ分APIをたたくのは時間の無駄になるため、
エラーではなく、取得結果0件の時は途中でアイテムの取得をやめるようにした。

 まとめ

時間はかかるものの、楽天APIを使って工夫することで
各ジャンル最大3000件のアイテムを取得することが出来る

以上、楽天API使ったアイテムの取得メモ

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1