Python3 AmazonAPI urllib.error.HTTPError: Ошибка HTTP 403: запрещено - PullRequest
1 голос
/ 04 июня 2019

У меня возникла проблема с использованием Python3 Amazon API. Я заметил, что у многих людей одна и та же проблема, но я искал решение везде безрезультатно.

Я пробую этот простой код:

from amazon.api import AmazonAPI

amazon = AmazonAPI (my_AMAZON_ACCESS_KEY, my_AMAZON_SECRET_KEY, my_AMAZON_ASSOC_TAG, region=’IT’)
products = amazon.search(Keywords = "book name", SearchIndex = "Books")
print(products)
#<amazon.api.AmazonSearch object at 0x7fcc238e7a20>

Пока здесь это не работает.

for item in products:
    print (item.title, item.isbn, item.price_and_currency)

здесь я получаю следующую ошибку:

File "amazon_loader.py", line 78, in getItemFromAmazon
    for item in products:
  File "/home/valentinim/.conda/envs/telepot/lib/python3.6/site-packages/amazon/api.py", line 544, in __iter__
    for page in self.iterate_pages():
  File "/home/valentinim/.conda/envs/telepot/lib/python3.6/site-packages/amazon/api.py", line 561, in iterate_pages
    yield self._query(ItemPage=self.current_page, **self.kwargs)
  File "/home/valentinim/.conda/envs/telepot/lib/python3.6/site-packages/amazon/api.py", line 573, in _query
    response = self.api.ItemSearch(ResponseGroup=ResponseGroup, **kwargs)
  File "/home/valentinim/.conda/envs/telepot/lib/python3.6/site-packages/bottlenose/api.py", line 274, in __call__
    {'api_url': api_url, 'cache_url': cache_url})
  File "/home/valentinim/.conda/envs/telepot/lib/python3.6/site-packages/bottlenose/api.py", line 235, in _call_api
    return urllib2.urlopen(api_request, timeout=self.Timeout)
  File "/home/valentinim/.conda/envs/telepot/lib/python3.6/urllib/request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "/home/valentinim/.conda/envs/telepot/lib/python3.6/urllib/request.py", line 532, in open
    response = meth(req, response)
  File "/home/valentinim/.conda/envs/telepot/lib/python3.6/urllib/request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "/home/valentinim/.conda/envs/telepot/lib/python3.6/urllib/request.py", line 570, in error
    return self._call_chain(*args)
  File "/home/valentinim/.conda/envs/telepot/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/home/valentinim/.conda/envs/telepot/lib/python3.6/urllib/request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)

urllib.error.HTTPError: HTTP Error 403: Forbidden

Полагаю, это проблема библиотеки python urrlib, а не AmazonAPI. Более того, я предполагаю, что это связано с идентификацией при попытке запросить информацию у загруженного объекта AmazonSearch, но я не знаю, как решить проблему.

Я пробовал также Python2, без различий.

...