PythonからのAmazon Product Advertising APIのテスト
Amazonのマーケットプレイスから中古価格の一覧を取得しようと思ったのだが出来ない様子。方法を知っている方は教えてください。
Amazon Product Advertising APIをPythonから扱うにはbottlenoseとamazonproductと言うモジュールがあるみたいなのだが、どちらを利用してもOffersの値を取ることが出きなかった。両方を使った感想としては、amazonproductは手軽にAPIをラッピングしてくれるラッパ、bottlenoseはAPIコールのみを代替してくれるだけで、レスポンスの値は自前でパースしないといけなAPIモジュール的な感じ。
基本的な操作だけならamazonproductが便利で、パースはlxmlが使われているので非常に高速になる上に使いやすい。bottlenoseはAPIのラッパなのでパーサは自前で用意するのだが、もちろんlxmlでもBeautifuSoupでも好きなものを使えばいい。
- 作者: Mark Lutz,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/02/26
- メディア: 大型本
- 購入: 12人 クリック: 423回
- この商品を含むブログ (127件) を見る
そいで両方共を使ってAPIから中古価格を取得しようと思ったのだが、どちらもそのような方法が提供されていない。開発ガイドを見るとOffersの値が提供されていない様子。2010年ころには提供されていたようだが、私が読む中ではOffersを見つけることが出来なかった。
そんなこんなでAPIからはどうしてもマーケットプレイスの値が取得できないようなのでHTMLページから取得することにした。サンプルコードは一番下に貼り付けておく。
このサンプルコードはAPIを経由せずにWebページから直接取得しているので各自Amazonの規約を確認して実行すること。どんなことが起きても知りません。
#!/usr/bin/python # coding: UTF-8 from bottlenose import api import BeautifulSoup import requests cfg = { "access_key": "FOO", "secret_key": "BAR", "associate_tag": "BAZ-22", "locale": "JP", } amazon = api.Amazon( cfg["access_key"], cfg["secret_key"], cfg["associate_tag"], Region=cfg["locale"]) query = u"人はなぜ学ばなければならないのか" def item_search( keywords, search_index="Books", item_page=1): response = amazon.ItemSearch( SearchIndex=search_index, Keywords=keywords, ItemPage=item_page, ResponseGroup="Large") soup = BeautifulSoup.BeautifulSoup( response) return soup.findAll( "item") def offer_search( asin, item_count=5): response = requests.get( "http://www.amazon.co.jp/gp/offer-listing/%s/" % ( asin,)) soup = BeautifulSoup.BeautifulSoup( response.text) items = [] for item in soup.findAll( "div", { "class": "a-row a-spacing-mini olpOffer"}): price = item.find( "span", { "class": "a-size-large a-color-price olpOfferPrice a-text-bold"}).text condition = item.find( "h3", { "class": "a-spacing-small olpCondition"}).text comment = item.find( "div", { "class": "comments"}) comment = comment.text if comment else "" items.append( { "price": price, "condition": condition, "comment": comment, }) return items for item in item_search( query): title = item.find( "title").text asin = item.find( "asin").text print title for item in offer_search( asin): print item["comment"]
- 作者: Mark Lutz,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/02/26
- メディア: 大型本
- 購入: 12人 クリック: 423回
- この商品を含むブログ (127件) を見る
パーフェクトPython (PERFECT SERIES 5)
- 作者: Pythonサポーターズ
- 出版社/メーカー: 技術評論社
- 発売日: 2013/03/05
- メディア: 大型本
- 購入: 1人 クリック: 65回
- この商品を含むブログ (17件) を見る
- 作者: Tarek Ziade,稲田直哉,渋川よしき,清水川貴之,森本哲也
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2010/05/28
- メディア: 大型本
- 購入: 33人 クリック: 791回
- この商品を含むブログ (91件) を見る
- 作者: ビープラウド
- 出版社/メーカー: 秀和システム
- 発売日: 2012/03/26
- メディア: 単行本
- 購入: 6人 クリック: 765回
- この商品を含むブログ (27件) を見る