痛風とシステム障害を恐れるエンジニアのブログ

趣味のことだったり仕事に関することだったりを徒然なるままに。webとかオープン系の会社で働いてます。お仕事の依頼お待ちしておりまーす。

AmazonのItemSearchAPIをPython3から利用する

アマゾンの商品販売情報を取得して利用するまでの道程( ゚Д゚)y─┛~~

  1. 用意するライブラリ
    1. Bottlenose AmazonAPIにアクセスするライブラリ

lionheart/bottlenose · GitHub

    1. Beautiful Soup XMLパーサ

kondou.com - Beautiful Soup 4.2.0 Doc. 日本語訳 (2013-11-19最終更新)



2 とりあえず実装してみる

from bs4 import BeautifulSoup
from bottlenose import api

#amazonで取得した情報を設定する
AMAZON_ACCESS_KEY_ID="*****"
AMAZON_SECRET_KEY="*****"
AMAZON_ASSOC_TAG="*****"

amazon = api.Amazon(AMAZON_ACCESS_KEY_ID,AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG, Region="JP")

# 集英社の発売する本を発売日順(新しいものから古いもの)にソートしたXMLで取得
response = amazon_jp.ItemSearch(SearchIndex="Books",BrowseNode=10805021,Sort="daterank",ItemPage=1,ResponseGroup="Large")

# バイト配列をunicodeの文字列に
# コレをしないと日本語は文字化けします。
u_response = response.decode('utf-8','strict')

# XMLをパース.BeautifulSoupの出番
soup = BeautifulSoup(u_response)

# 商品情報はitemタグに入ってます。
# BeautifulSoupはオリジナルXMLタグを全て小文字にするようなので注意
items = soup.findAll("item")
for item in items:
    #ここにやりたい処理を書く

こんな感じです。

PythonAmazonAPIにアクセスするライブラリは他にもあるけど、個人的にはBottlenoseが使いやすかったです。
というのもXMLのパース自体はすでにBeautifulSoupを利用していたので、そこまで多機能を求めていなかったってのもあります。

パラメータの設定は基本的なのを載せてますが、設定次第では色んな検索の仕方が出来そう。
BrowseNodeは公式サイトにある情報が古かったりするのでどうしたものか・・・。
いちおうBrowseNodeを取得するAPIがあるから自前で取得するしかないのかなぁ・・・。