読者です 読者をやめる 読者になる 読者になる

PythonでProduct Advertising APIにリクエストを送信するためのモジュール

題名変更しました。なんか分かりにくかったので。^^;

意外と[python amazon]で検索してくる人が多いので、もうちょっと詳しいPyzonモジュールの使い方の説明をします。
コードはこちら

Pyzonとは

PyzonとはPythonでAmazonのProduct Advertising APIにRESTリクエストを送信するためのモジュールで、8月中旬から始まる認証にも対応しています。

簡単なインストール?してから使うまでの流れ。

  1. ファイルシステム上のPythonがアクセスできるどこかにPyzon.pyを保存する。importしたいファイルと同じディレクトリでいいのではないかと。
  2. 上記のやつをインポートする
  3. Pyzonクラスのインスタンスを作る。コンストラクタにAmazonWebServiceのAccess Key IDとSecret Access Keyを指定するのをお忘れなく。Associate Tagはなくても問題ないです。
  4. プロキシを設定する場合は作成してインスタンスのsetProxy(host, port)メソッドを実行する。portは省略された場合8080になる
  5. 上記で作成したインスタンスにはProduct Advertising APIのOperationで指定するのと全く同じ名前のメソッドがあるので、それを必須パラメータを引数に与えて呼び出すと、xmlが返ってくる。必須パラメータは全て小文字にし、単語を_(アンダースコア)で区切ったものに、その他のパラメータはそのまま指定するようになっています。

Operationに指定するものの一覧はこちら⇒Product Advertising API (Version 2009-03-31)のまとめ - SELECT * FROM life;

具体的な使用例 その1 ItemSearch

version 2009-03-31におけるItemSearchの引数など詳しくは⇒ItemSearchのまとめ - SELECT * FROM life;

from Pyzon import Pyzon # Pyzonモジュールのインポート
pyzon = Pyzon('AccessKeyID', 'SecretAccessKey', 'AssociateTag') # この順番で指定してください
# pyzon.setProxy(****) プロキシの設定が必要な場合はこれを実行
# ItemSearchでSearchIndex=Books&Keywords=Python&ResponseGroup=Largeというリクエストを送る場合
# SearchIndexは必須パラメータなのでsearch_indexにする。
# KeywordsとResponseGroupは必須でないのでそのまま指定する
result_xml = pyzon.ItemSearch(search_index='Books', Keywords='Python', ResponseGroup='Large')
# ファイルがencoding:utf8と指定していれば日本語もOK。
result_xml = pyzon.ItemSearch(search_index='Books', Keywords=u'初めてのPython')
具体的な使用例 その2 ItemLookup

version 2009-03-31におけるItemLookupの引数など詳しくは⇒ItemLookupのまとめ - SELECT * FROM life;

# 上記と同様にpyzonを作ったとする
# ItemLookupでItemId=4873113938&ResponseGroup=ItemAttributesというリクエストを送る場合
# ItemIdは必須パラメータなのでitem_id
# ResponseGroupは必須でないのでそのまま指定
# int型を指定しても、内部でstr型に変換されるので問題なし
result_xml = pyzon.ItemLookup(item_id=4873113938, ResponseGroup='ItemAttributes')

返り値に関して

Pyzonでの返り値は生のxmlです。あとはdomを使うなり、BeautifulSoupを使うなりして下さい。

2009/07/18 追記

署名を作成しておきながら、リクエストに追加していませんでした(汗
というわけで署名に対応するように改訂しました。こんどこそ大丈夫です。