使用Amazon Product Advertising API搜索图书 - Python

时间:2013-05-01 23:27:00

标签: python amazon-web-services httpwebrequest amazon

tl;博士:我正在使用亚马逊产品广告API和Python。如何为书籍执行关键字搜索并获取包含每个条目的TITLE,ISBN和PRICE的XML结果?

详细版本:

我在一个网站上使用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解析了这个。

在亚马逊的情况下,它似乎并不那么容易。我想我会从寻找一个简单的包装开始。但是他们的开发者网站似乎没有提供我感兴趣的python包装器(Product Advertising 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,然后查看XML结果,其中包含标题和ISBN。但没有价格!尔加!在进行了一些绝望的谷歌搜索之后,稍微修改了一下URL(添加& ResponseGroup = Offers和& MerchantID = All)就可以了,但是没有标题。 (我想我还有另外一个问题,那就是在哪里可以找到可能的ResponseGroup参数的索引?)

总的来说,正如你所看到的,我真的没有一个可靠的方法论。 constru-a-url方法是一种体面的方式,还是比它的价值更麻烦?或许顶部的博士是整体问题的更好代表。

2 个答案:

答案 0 :(得分: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

希望这有帮助!

答案 1 :(得分:0)

如果您遇到python-amazon-product-api的安装问题,请将详细信息发送到邮件列表,我们将为您提供帮助。