PythonでAmazonのAPIを使う
事前準備 - APIキーとアソシエイトタグの入手
ここのページを参考にしました。素直にアカウントとってAPIキーを発行してもらいます。アソシエイト(アフィリエイト)はまた別のベージです
Amazonアソシエイト・プログラムへの参加 - Amazon Web サービス
ライブラリの選定
とりあえずpypiでさがしたら以下の2種類が有力そうなので両方軽く試した
python-amazon-product-api
けっこうよしなにやってくれるライブラリ。lxmlもつかってよしなにするのかもしれないのだけど、とりあえず軽く動かしてみたには挙動がつかみにくい。あとは対応しているプロパティを拾ってくれる時はいいけどそうじゃない属性は拾ってくれないっぽいし、ちょっと微妙な気がした。
簡単なコンソールで試したサンプル
>>> import amazonproduct >>> aws_key = 'YOUR KEY' >>> aws_secret = 'YOUR KEY' >>> afi_id = 'YOUR KEY' >>> api = amazonproduct.API(aws_key, aws_secret, 'jp', afi_id) >>> items = api.item_search("Music", Artist="Ken Ishii") >>> items <amazonproduct.paginators.LxmlItemSearchPaginator object at 0x101fee510> #seeはdirよりわかりやすくプロパティやメソッドを表示してくれる便利ライブラリ >>> from see import see >>> for i in items: ... print see(i.Items.Item) ... ... .* [] in bool() hash() help() iter() len() repr() reversed() str() .ASIN .DetailPageURL .ItemAttributes .ItemLinks .addattr() .addnext() .addprevious() .append() .attrib .base .clear() .countchildren() .descendantpaths() .extend() .find() .findall() .findtext() .get() .getchildren() .getiterator() .getnext() .getparent() .getprevious() .getroottree() .index() .insert() .items() .iter() .iterancestors() .iterchildren() .iterdescendants() .iterfind() .itersiblings() .itertext() .keys() .makeelement() .nsmap .prefix .remove() .replace() .set() .sourceline .tag .tail .text .values() .xpath()
参考::python-amazon-product-apiを触ってみたメモ - brainstorm
参考::python-amazon-product-api 0.2.5 : Python Package Index
bottlenose
認証部分だけ軽くラップしてくれるけど、あとは自力でAmazonのAPIを叩かなきゃいけない。返り値でXMLが帰ってくるのでこれも自力でバースしないといけない。XMLまわりはよくわからないのでとりえあずBeautifulSoupで拾ったりした。そのかわり生のXML拾ってくれるし、とれる属性はもちろん中にに入っていれば好きにパースできる。
簡単なコンソールのサンプル
>>> aws_key = 'YOUR KEY' >>> aws_secret = 'YOUR KEY' >>> afi_id = 'YOUR KEY' >>> import bottlenose #なんか pypi のサンプルだと動かないっぽい?githubのREADMEを参考にした >>> api = bottlenose.Amazon(aws_key, aws_secret, afi_id) #dir の代わりに見やすくする便利ライブラリ see >>> from see import see #ItemSearchなどがないことがわかる。自力でAPIを叩くこと。 >>> see(api) () .* hash() repr() str() .AWSAccessKeyId .AWSSecretAccessKey .AssociateTag .Operation .Region .Style .Timeout .Version .signed_request() >>> items_xml = api.ItemSearch(SearchIndex="Music", Artist="SND") #BeautifulSoupで自力でパースする >>> from BeautifulSoup import BeautifulSoup >>> soup = BeautifulSoup(items_xml) >>> soup('title') [<title>Make Snd Cassette</title>, <title>Stdiosnd Types</title>, <title>Tender Love</title>, <title>Bit Sand Riders</title>, <title>Snd Lite</title>, <title>Snd Lite</title>, <title>Tender Love [Vinyl]</title>, < title>Makesnd Cassette [Vinyl]</title>, <title>Atavism</title>, <title>Stdiosnd Types [Vinyl]</title>]
参考::pythonでAmazon Product APIにアクセスするライブラリ bottlenoseを触ってみたメモ - brainstorm
参考::SearchIndex-ItemSearch Parameter Combinations for JP - Product Advertising API
参考::python-amazon-simple-product-api 1.0.0 : Python Package Index