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 は、質問全体をよりよく表しています。