使用亚马逊产品广告 API - Python 搜索书籍
Posted
技术标签:
【中文标题】使用亚马逊产品广告 API - Python 搜索书籍【英文标题】:Searching for books with the Amazon Product Advertising API - Python 【发布时间】:2013-04-26 00:50:12 【问题描述】:tl;dr:我正在使用带有 Python 的亚马逊产品广告 API。如何对一本书进行关键字搜索并获得包含每个条目的 TITLE、ISBN 和 PRICE 的 XML 结果?
详细版:
我在一个网站上使用 Python 工作,该网站允许用户从 eBay 和 Amazon 等不同网站搜索教科书。基本上,我需要从其中一个站点的一组搜索结果中获取每个项目的简单信息,例如标题、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)提供 python 包装器。我尝试过的一个,来自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。但是没有价格!呸!经过一番绝望的 Google 搜索后,对 URL 稍作修改(添加 &ResponseGroup=Offers 和 &MerchantID=All)就成功了,但是没有标题。 (我想还有一个问题,我在哪里可以找到可能的 ResponseGroup 参数的索引?)
总体而言,如您所见,我真的没有为此提供可靠的方法。构造 URL 方法是一个不错的方法,还是会比它的价值更麻烦?也许顶部的 tl;dr 可以更好地代表整个问题。
【问题讨论】:
我以前没有听说过产品广告 API - 这很有趣!我对你的整个问题都无能为力,但这里是响应组的官方列表docs.aws.amazon.com/AWSECommerceService/latest/DG/… 【参考方案1】:另一种方式可能是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
希望这会有所帮助!
【讨论】:
【参考方案2】:如果您在安装 python-amazon-product-api 时遇到问题,请将详细信息发送到邮件列表,我们会为您提供帮助。
【讨论】:
以上是关于使用亚马逊产品广告 API - Python 搜索书籍的主要内容,如果未能解决你的问题,请参考以下文章
没有亚马逊产品广告 API 的亚马逊 ASIN 到 ISBN