[Python] Amazon API で商品のコンディションコメントを取得してみた

Amazon マーケットプレイスに出品されている情報から「商品のコンディションのコメント」を取得する方法を調べたのでご紹介します。

Python

その他に、商品の情報を取得したい場合も応用できます。

ちなみに今回は [Python] Amazon Product Advertising APIを使ってみました の記事にて、itemSearch のキーワードを”Python クックブック 第2版”に変更して、この本のマーケットプレイスから本のコンディションコメントを取得しました。

取得したい情報が「コンディションのコメント」なのですが、これは XML の要素 ConditionNote に含まれています。要素は親要素から順番に以下のようになります。

<Items><Item><Offers> <OfferAttributes><ConditionNote>

よって、要素 ConditionNote の情報を取得したい時に、親要素 OfferAttributes を全て取得して、取得したデータから1つずつ OfferAttributes の子要素である ConditionNote を見ていくようにしたらエラーがでました。

以下、エラーで、最初の方は出力できているのですが、途中から取得できませんでした。

$ python t_offerattributes_fail.py 
◆◆◆小口に汚れが有ります。カバーに使用感があります。他は問題ありません。迅速・丁寧な発送を心がけております。【日曜以外毎日発送】
エアキャップにて梱包し、速やかに発送します。
Traceback (most recent call last):
  File "t_offerattributes_fail.py", line 17, in <module>
    print item.conditionnote.contents[0]
AttributeError: 'NoneType' object has no attribute 'contents'

以下、失敗した場合のコードです。

t_offerattributes_fail.py

#coding:utf-8
import sys, codecs
sys.stdout = codecs.lookup('utf_8')[-1](sys.stdout)
 
from amazon import Amazon
 
# キーワードで本を検索したい!
amazon = Amazon("自分のAccess Key", "自分のSecret Access Key")
xml = amazon.itemSearch("Books", Keywords=u"Python クックブック 第2版", ResponseGroup="OfferFull", MerchantId="All", Condition="All")  # 本の詳細な販売情報(OfferFull)
print amazon.url  # リクエストURL
print unicode(xml, 'utf_8')		# Amazonのレスポンス
 
# XMLから情報を取り出す
from BeautifulSoup import BeautifulStoneSoup
soup = BeautifulStoneSoup(xml)	# XMLをsoupに格納
 
# soupから要素 offerattributes の情報のみを取り出す
for item in soup.findAll("offerattributes"):
	print item.conditionnote.contents[0]
		# item要素以下の要素 conditionnote の内容を出力

要素 OfferAttributes の子要素に ConditionNote がないときがあるので、item.conditionnote.contents[0] の中身がないことでエラーになります。

よって、直接、要素 ConditionNote を取得すればいいわけです。

上記プログラムの最後の4行だけ以下のように書き換えれば上手く商品のコンディションコメントを取得できました。
 

1
2
3
4
# soupから要素 conditionnote の情報のみを取り出す
for item in soup.findAll("conditionnote"):
	print item.contents[0]
		# item要素以下の要素 conditionnote の内容を出力

以下、出力された情報です。

$ python t_offerattributes_true.py 
◆◆◆小口に汚れが有ります。カバーに使用感があります。他は問題ありません。迅速・丁寧な発送を心がけております。【日曜以外毎日発送】
エアキャップにて梱包し、速やかに発送します。
新品未読品です。在庫確実。迅速発送いたします。
新品未読品の状態の書籍です。水濡れ防止にて丁寧に梱包し、迅速に発送いたします。(原則3営業日以内)在庫切れ時は速やかにご注文をキャンセルさせて頂きます。定価より高価になっている場合がございますので、必ず定価をご確認ください。 (土、日、祝は原則お休みです。)
新品未読の商品ですので非常に綺麗です。迅速丁寧に対応いたします。International shipping available.
★初版。カバーに極小ヨレあり。中身文面綺麗です。エアーパッキンにて梱包し迅速に発送致します。★
新品美品です。ビニール梱包、メール便にて迅速発送させていただきます。(ご注文をいただいた時間にもよりますが、翌日〜一週間の発送になります)品切れの場合はご了承下さい。希少品につき、若干定価より高めになっておりますが、ご検討くださいませ。
実質新品として取り扱われたものを仕入直後より未読のままビニール封入しております。ただし、一度棚に並んだり再配本された商品ですので本出品としてはコンディション「非常に良い」とします、陳列や配送などでのスレなどの瑕疵についてはご容赦下さい。相場状況などに合わせて(定価に近い参考価格4830)より高価格な設定となっております。よくご検討の上ご購入ください。在庫共有しておりますので品切れもございます。その場合、注文キャンセルとさせていただきますがご了承ください。在庫切れ、高価格設定の点についてお気にされない方のみご注文お願い致します。

これを利用して、商品の検索に細かくフィルタをかけることができそうです。

以上です。