2013-05-01 106 views
6

tl; dr:我正在使用Amazon产品广告API和Python。我怎样才能做一本书的关键词搜索,并获得每个条目包含TITLE,ISBN和PRICE的XML结果?使用亚马逊产品广告API搜索图书 - Python

详细的版本:

我在Python工作的一个网站,允许用户搜索来自不同的网站,如eBay和亚马逊的教科书。基本上,我需要从其中一个站点的一组搜索结果中获取简单信息,例如标题,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命名。

在亚马逊的情况下,它似乎并不那么容易。我以为我会开始寻找一个简单的包装。但是他们的开发者网站似乎没有提供我感兴趣的产品广告API的产品广告API。我试过的一个,来自https://pypi.python.org/pypi/python-amazon-product-api/的python-amazon-product-api 0.2.5,给了我一些可能不值得花时间查看的安装问题(但也许我只是被激怒了......)。我也环顾四周,发现pyaws和pyecs,但这些似乎使用不推荐使用的身份验证机制。

然后我想我会只是尝试从头开始构建的URL像我一样在eBay工作。但是亚马逊需要在URL中加上一个时间戳,我想我可以用程序化的方式来构建(也许像这些人一样,他们整个9码的签名是:https://forums.aws.amazon.com/thread.jspa?threadID=10048)。

即使这样做(我怀疑会发生,考虑到物流给出的挫折数量迄今为止),底线是我想要的名称,价格和ISBN搜索的书籍。我能够通过API网站上的教程生成示例URL,然后查看确实包含标题和ISBN的XML结果。但没有价格!尔加!经过一些绝望的谷歌搜索后,对URL进行了一些修改(增加了& ResponseGroup = Offers和& MerchantID = All),但是没有标题。 (我想我还有另一个问题,那么,我可以在哪里找到可能的ResponseGroup参数的索引?)

总的来说,正如你所看到的,我真的没有一个可靠的方法。构建一个网址的方式是一种体面的方式,还是会比它值得更多的麻烦?顶部的tl; dr可能是整体问题的更好表示。

+1

我之前没有听说过产品广告API - 这很有趣!我无法帮助您解决所有问题,但以下是响应组的官方列表http://docs.aws.amazon.com/AWSECommerceService/latest/DG/CHAP_ResponseGroupsList.html – Qanthelas 2013-05-01 23:43:49

回答

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 

希望这有助于!

0

如果你有蟒蛇,亚马逊产品的API的安装问题,请发送细节的邮件列表,你会得到帮助。