Python で Amazon Product Advertising API から商品情報取得

Amazon Product Advertising API を Python から利用してみます。
方法が2通りあったので、両方試してみました。

アクセスキー取得などの事前準備はこちらを参考にしてください。

bottlenose

lionheart/bottlenose · GitHub

bottlenoseというモジュールから使用してみます。
返り値が xml なため、BeautifulSoup でパースするのが王道みたいです。

必要なモジュールは pip からインストールします。

pip install bottlenose
pip install beautifulsoup4

サンプルプログラムを作成します。
ACCESS_KEY などは適宜変更してください。

vim bottlenose_item_lookuup.py
import bottlenose
from bs4 import BeautifulSoup
 
ACCESS_KEY = "****"
SECRET_ACCESS_KEY = "****"
ASSOCIATE_TAG = "****"

amazon = bottlenose.Amazon(ACCESS_KEY, SECRET_ACCESS_KEY, ASSOCIATE_TAG, Region="JP")
response = amazon.ItemLookup(ItemId="4774142298", ResponseGroup="ItemAttributes",SearchIndex="Books", IdType="ISBN")
soup = BeautifulSoup(response,"lxml")

# 商品情報の部分のみ表示
print(soup.find('item').prettify())

実行すると xml が整形された形で出力されます。

python bottlenose_item_lookup.py

# 以下が表示
<item>
 <asin>
 4774142298
 </asin>
 <detailpageurl>
 https://www.amazon.co.jp/Python%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%83%96%E3%83%83%E3%82%AF-%E8%BE%BB-%E7%9C%9F%E5%90%BE/dp/4774142298%3FSubscriptionId%3DAKIAJ53VYCPRK7J4WTSA%26tag%3Drunble1-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4774142298
 </detailpageurl>
 <itemlinks>
 <itemlink>
 <description>
 Add To Wishlist
 </description>
 <url>
 https://www.amazon.co.jp/gp/registry/wishlist/add-item.html%3Fasin.0%3D4774142298%26SubscriptionId%3DAKIAJ53VYCPRK7J4WTSA%26tag%3Drunble1-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D5143%26creativeASIN%3D4774142298
 </url>
 </itemlink>
 <itemlink>
 <description>
 Tell A Friend
 </description>
 <url>
 https://www.amazon.co.jp/gp/pdp/taf/4774142298%3FSubscriptionId%3DAKIAJ53VYCPRK7J4WTSA%26tag%3Drunble1-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D5143%26creativeASIN%3D4774142298
 </url>
 </itemlink>
 <itemlink>
 <description>
 All Customer Reviews
 </description>
 <url>
 https://www.amazon.co.jp/review/product/4774142298%3FSubscriptionId%3DAKIAJ53VYCPRK7J4WTSA%26tag%3Drunble1-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D5143%26creativeASIN%3D4774142298
 </url>
 </itemlink>
 <itemlink>
 <description>
 All Offers
 </description>
 <url>
 https://www.amazon.co.jp/gp/offer-listing/4774142298%3FSubscriptionId%3DAKIAJ53VYCPRK7J4WTSA%26tag%3Drunble1-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D5143%26creativeASIN%3D4774142298
 </url>
 </itemlink>
 </itemlinks>
 <itemattributes>
 <author>
 辻 真吾
 </author>
 <manufacturer>
 技術評論社
 </manufacturer>
 <productgroup>
 Book
 </productgroup>
 <title>
 Pythonスタートブック
 </title>
 </itemattributes>
</item>

個別で取りたい場合は以下のように。

title = soup.find('title').text

AttributeError: module ‘bottlenose’ has no attribute ‘Amazon’

最初、bottlenose.py という名前でファイルを作成・実行し、このエラーがでた。

モジュール名と同じファイル名をつけたことが原因でした。
ディレクトリ名も同名だと駄目なようです。

Special Thanks!
Python でモジュール利用時に AttributeError が出た時はファイル名ディレクトリ名が被ってないか調べること

pythonamazonsimpleproductapi

yoavaviram/python-amazon-simple-product-api: A simple Python wrapper for the Amazon.com Product Advertising API

ライブラリをインストールします。

pip install python-amazon-simple-product-api

サンプルプログラムはこちら。

from amazon.api import AmazonAPI

ACCESS_KEY = "****"
SECRET_ACCESS_KEY = "****"
ASSOCIATE_TAG = "****"

amazon = AmazonAPI(ACCESS_KEY, SECRET_ACCESS_KEY, ASSOCIATE_TAG, region="JP")
try:
    product = amazon.lookup(ItemId="4839947597")
    print (product.title)
    print (product.price_and_currency)
except Exception as e:
    print (e)

実行するとタイトルと値段が表示されます。

$ python amazon_simple_product.py
# 以下が表示
'PHP+MySQLマスターブック'
('2916', 'JPY')

どちらを使うか

2つとも使用してみた感想としては、bottlenoseのほうが使いやすいと思いました。

参考

PythonとbottlenoseでAmazon Product Advertising APIを使う。

スポンサーリンク
ad
ad

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
ad