首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找产品时错误

查找产品时错误
EN

Stack Overflow用户
提问于 2016-07-02 17:31:06
回答 2查看 1.1K关注 0票数 9
代码语言:javascript
复制
from amazon.api import AmazonAPI

AMAZON_ACCESS_KEY = "A******************A"
AMAZON_SECRET_KEY = "7***********************E"
AMAZON_ASSOC_TAG = "j*****-20"

amazon = AmazonAPI(AMAZON_ACCESS_KEY, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG, region='US')
print(amazon)
#product = amazon.lookup(ItemId='B002RL8FBQ')

当我运行上面的代码时,它工作得很好,并且我从print函数获得了这个输出:<amazon.api.AmazonAPI object at 0x7fb6e59f7b38>

所以,使用我的访问密钥、秘密密钥和关联标记,一切都很好。

但是,如果我不注释最后一行#product = amazon.lookup(ItemId='B00EOE0WKQ'),则会得到以下错误回溯:

代码语言:javascript
复制
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    product = amazon.lookup(ItemId='B00EOE0WKQ')
  File "/home/darren/Python_projects/amazon_wp/myvenv/lib/python3.4/site-packages/amazon/api.py", line 173, in lookup
    response = self.api.ItemLookup(ResponseGroup=ResponseGroup, **kwargs)
  File "/home/darren/Python_projects/amazon_wp/myvenv/lib/python3.4/site-packages/bottlenose/api.py", line 251, in __call__
    {'api_url': api_url, 'cache_url': cache_url})
  File "/home/darren/Python_projects/amazon_wp/myvenv/lib/python3.4/site-packages/bottlenose/api.py", line 212, in _call_api
    return urllib2.urlopen(api_request, timeout=self.Timeout)
  File "/usr/lib/python3.4/urllib/request.py", line 161, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python3.4/urllib/request.py", line 469, in open
    response = meth(req, response)
  File "/usr/lib/python3.4/urllib/request.py", line 579, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python3.4/urllib/request.py", line 507, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.4/urllib/request.py", line 441, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.4/urllib/request.py", line 587, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 400: Bad Request

我遵循了官方github对这个https://github.com/yoavaviram/python-amazon-simple-product-api的指示,我使用的代码将看到我从github页面的“使用”副标题中使用了什么,因此我不知道出了什么问题。

为了获得更多的信息,我正在使用一个虚拟环境,为了表明我安装了正确的软件包,这里是我的输出pip冻结:

代码语言:javascript
复制
(myvenv) darren@my_comp:~/Python_projects/amazon_wp$ pip3 freeze
bottlenose==0.6.3
lxml==3.6.0
python-amazon-simple-product-api==2.1.0
python-dateutil==2.5.3
six==1.10.0

此外,我尝试了几个不同的有效产品编号,并得到了相同的错误信息。

我在ubuntu 14.04上使用python 3.4

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-10 12:32:49

我想,问题是地区问题。请选择有效值从这里开始。可以解释为AWS可以验证您的凭据,但是当涉及到“真正”调用时,它会失败,因为'US‘不是有效区域.

票数 4
EN

Stack Overflow用户

发布于 2016-07-04 21:41:21

您可能需要授权您的API访问帐户。这个分步应该会带你通过它。

编辑:

我已经安装了所有相同的版本,并且用自己的密钥使用相同的python代码,并且工作正常。我唯一一次遇到这个错误时,我没有指定区域(这显然是您正在做的)。

我想尝试的一件事是将以下代码添加到脚本中:

进口测井 logging.basicConfig(level=logging.DEBUG)

它应该显示以下请求url:

http://webservices.amazon.co.uk/onca/xml?AWSAccessKeyId=&AssociateTag=&ItemId=B00EOE0WKQ&Operation=ItemLookup&ResponseGroup=Large&S ervice=AWSECommerceService&Timestamp=&Version=2013-08-01&Signature=:DEBUG:bottlenose.api:Amazon网址

您可以在浏览器中访问该文档,并且应该会看到返回的XML文档。如果失败了,希望它会给您一个比pythonlib提供的错误更好的错误。

例如,如果我访问https://associates-amazon.s3.amazonaws.com/scratchpad/index.html (从未让它对我起作用),但它提供了该区域的基本URL列表。

我在.co.uk区域上创建了我的关联帐户,因此我的请求只对http://webservices.amazon.co.uk有效,如果我尝试查询http://webservices.amazon.com,我会看到:

我们计算的请求签名与您提供的签名不匹配。检查您的AWS秘密访问密钥和签名方法。有关详细信息,请参阅服务文档。

如果您在amazon.com上有一个关联帐户,请尝试它,而不指定区域,因为我认为这是默认的。除上述内容外,请检查VM是否具有internet连接性,如果没有其他工作,请尝试创建另一个访问密钥并使用该密钥。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38162779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档