6

tl;dr : Python で Amazon Product Advertising API を使用しています。本のキーワード検索を行って、各エントリの TITLE、ISBN、および PRICE を含む XML 結果を取得するにはどうすればよいですか?

詳細バージョン:

私は、ユーザーが eBay や Amazon などのさまざまなサイトから教科書を検索できる Web サイトで Python を使用しています。基本的には、それらのサイトの一連の検索結果から各商品のタイトル、ISBNS、価格などの簡単な情報を取得する必要があります。次に、アプリケーションで必要に応じてその情報を保存し、フォーマットします (HTML の表示など)。

eBay の場合、必要な情報を入手するのはそれほど難しくありませんでした。私urllib2は見つけたサンプルに基づいてリクエストを作成していました。必要なのは、URL に追加する特別なセキュリティ キーだけでした。

def ebaySearch(keywords): #keywords is a list of strings, e.g. ['moby', 'dick'] 

  #findItemsAdvanced allows category filter -- 267 is books 
  #Of course, I replaced my security appname in the example below 

  url = "http://svcs.ebay.com/services/search/FindingService/v1?OPERATION-NAME=findItemsAdvanced&SERVICE-NAME=FindingService&SERVICE-VERSION=1.0.0&SECURITY-APPNAME=[MY-APPNAME]&RESPONSE-DATA-FORMAT=XML&REST-PAYLOAD&categoryId=267&keywords="

  #Complete the url...  
  numKeywords = len(keywords)
  for k in range(0, numKeywords-1):
    url += keywords[k]
    url += "%20"  

  #There should not be %20 after last keyword
  url += keywords[numKeywords-1] 

  request = urllib2.Request(url) 
  response = urllib2.urlopen(request)  #file like thing (due to library conversion)

  xml_response = response.read()
  ... 

...次に、これを minidom で解析しました。

Amazonの場合、そう簡単にはいかないようだ。簡単なラッパーを探すことから始めようと思いました。しかし、彼らの開発者サイトは、私が興味を持っているもの (Product Advertising API) の Python ラッパーを提供していないようです。私が試したもの、 https://pypi.python.org/pypi/python-amazon-product-api/の python-amazon-product-api 0.2.5 は、価値のないインストールの問題をいくつか与えています調べる時間です(しかし、私はただ怒っているだけかもしれません..)。私も周りを見回してpyawsとpyecsを見つけましたが、これらは非推奨の認証メカニズムを使用しているようです。

次に、eBay の場合と同じように、URL を最初から作成しようと考えました。しかし、Amazon は URL にタイム スタンプを必要とします。これは、プログラムで作成できると思います (おそらく、署名で 9 ヤード全体を移動するこれらの人々のようなものです: https://forums.aws.amazon.com/thread.jspa?スレッドID=10048 )。

たとえそれがうまくいったとしても (ロジスティクスがこれまでに与えたフラストレーションの量を考えると、そうなるとは思えません)、要点は、検索する本の名前、価格、および ISBN が欲しいということです。API Web サイトのチュートリアルでサンプル URL を生成し、実際にタイトルと ISBN を含む XML の結果を確認できました。しかし、価格はありません!ガッ!Google で必死に検索した後、URL を少し変更 (&ResponseGroup=Offers と &MerchantID=All を追加) することでうまくいきましたが、タイトルがありませんでした。(さらに別の質問があると思いますが、可能性のある ResponseGroup パラメーターのインデックスはどこにありますか?)

全体として、ご覧のとおり、私はこれに関する確固たる方法論を持っていません。コンストラクト-ア-URL アプローチは適切な方法ですか?それとも、価値がある以上に面倒なことになるのでしょうか? おそらく、上部の tl;dr は、質問全体をよりよく表しています。

4

2 に答える 2

6

別の方法はamazon-simple-product-apiです:

from amazon.api import AmazonAPI
amazon = AmazonAPI(ACCESS_KEY, SECRET, ASSOC)
results = amazon.search(Keywords = "book name", SearchIndex = "Books")
for item in results:
    print item.title, item.isbn, item.price_and_currency

インストールするには、github からクローンして実行するだけです

sudo python setup.py install

お役に立てれば!

于 2013-07-30T13:37:16.630 に答える
0

python-amazon-product-api のインストールに問題がある場合は、メーリング リストに詳細を送信してください。

于 2013-06-21T20:06:10.947 に答える