python - 使用亚马逊产品广告 API 搜索图书 - Python

标签 python amazon-web-services httpwebrequest amazon

tl;dr:我正在使用 Amazon Product Advertising API 和 Python。我怎样才能对一本书进行关键字搜索并获得包含每个条目的 TITLE、ISBN 和 PRICE 的 XML 结果?

详细版本:

我在一个网站上使用 Python 工作,该网站允许用户从 eBay 和亚马逊等不同网站搜索教科书。基本上,我需要从其中一个站点的一组搜索结果中获取简单的信息,例如标题、ISBNS 和每件商品的价格。然后,我可以根据需要在我的应用程序中存储和格式化该信息(例如,显示 HTML)。

就 eBay 而言,获取我需要的信息并不难。我使用 urllib2 根据我找到的示例发出请求。我所需要的只是一个添加到 URL 的特殊安全 key :

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)提供 python 包装器。我试过的一个,来自 https://pypi.python.org/pypi/python-amazon-product-api/ 的 python-amazon-product-api 0.2.5 ,一直给我一些可能不值得花时间研究的安装问题(但也许我只是被激怒了..)。我还环顾四周,发现了 pyaws 和 pyecs,但它们似乎使用了已弃用的身份验证机制。

然后我想我会尝试从头开始构建 URL,就像我为 eBay 做的那样。但是 Amazon 需要在 URL 中添加时间戳,我想我可以通过编程来构建它(也许像这些人一样,他们用签名走了整整 9 码:https://forums.aws.amazon.com/thread.jspa?threadID=10048)。

即使这行得通(我怀疑这是否会发生,考虑到迄今为止物流方面的挫败感),最重要的是我需要我搜索的书籍的名称、价格和 ISBN。我能够使用 API 网站上的教程生成示例 URL,然后查看 XML 结果,其中确实包含标题和 ISBN。但是没有价格!啊!经过一番拼命的 Google 搜索后,对 URL 稍作修改(添加 &ResponseGroup=Offers 和 &MerchantID=All)就成功了,但是没有标题。 (我想我还有另一个问题,那就是我在哪里可以找到可能的 ResponseGroup 参数的索引?)

总的来说,如您所见,我真的没有一个可靠的方法来解决这个问题。构建 URL 方法是一个不错的方法,还是会比它的值(value)更麻烦?也许顶部的 tl;dr 可以更好地代表整个问题。

最佳答案

另一种方式可能是 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

希望这对您有所帮助!

关于python - 使用亚马逊产品广告 API 搜索图书 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16328040/

相关文章:

amazon-web-services - "The conditional request failed"而条件有效

python - 使用 python 将许多变量附加到 MySQL

Python监控串口(RS-232)握手信号

amazon-web-services - AWS 连接在端口 8080 上被拒绝

amazon-web-services - 我可以使用 CloudFormation 模板更新 AWS Lambda 函数吗?

c# - HttpWebRequest Post 方法发送部分数据

python - 使用Scrapy创建新项目时出错

python - Gmail API : ModuleNotFoundError: No module named 'google'

c# - matweb.com : How to get source of page?

python - 如何在uri中传递十六进制值?