如何通过python-amazon-product-api的item_lookup函数获取Amazon商品的价格报价列表?

3 投票
2 回答
7502 浏览
提问于 2025-04-15 20:26

我正在尝试写一个函数,根据ASIN获取一个商品的报价列表(它们的价格):

def price_offers(asin):
    from amazonproduct import API, ResultPaginator, AWSError
    from config import AWS_KEY, SECRET_KEY
    api = API(AWS_KEY, SECRET_KEY, 'de')
    str_asin = str(asin)
    node = api.item_lookup(id=str_asin, ResponseGroup='Offers', Condition='All', MerchantId='All')
    for a in node:
        print a.Offer.OfferListing.Price.FormattedPrice

我在阅读这个文档:http://docs.amazonwebservices.com/AWSECommerceService/latest/DG/index.html?ItemLookup.html,并试图让它工作,但它总是显示:

Failure instance: Traceback: <type 'exceptions.AttributeError'>: no such child: {http://webservices.amazon.com/AWSECommerceService/2009-10-01}Offer

2 个回答

6

好的,谢谢。为了回答我自己的问题,给可能有同样困扰的人,正确的做法是:

def price_offers(asin):
    from amazonproduct import API, ResultPaginator, AWSError
    from config import AWS_KEY, SECRET_KEY
    api = API(AWS_KEY, SECRET_KEY, 'de')
    str_asin = str(asin)
    node = api.item_lookup(id=str_asin, ResponseGroup='Offers', Condition='All', MerchantId='All')
    for a in node.Items.Item.Offers.Offer:
        print a.OfferListing.Price.FormattedPrice

amazonproduct 是来自于 http://pypi.python.org/pypi/python-amazon-product-api

6

看起来你的回应中没有“Offer”这个元素。你可以试试

node = api.item_lookup(...)
from lxml import etree
print etree.tostring(node, pretty_print=True)

看看返回的XML长什么样子。

撰写回答