1
私はAmazonからリクエストを作成し、次にBeautifulSoupで応答を解析するのにbottlenoseを使用しています。2台のPCの同じスクリプトで、1つのみがHTTPエラー400を取得します。
私のMacとRaspberry-Piには全く同じpythonスクリプトがあります。
#!/usr/bin/python
import sys
import ids
import csv
import bottlenose as BN
import lxml
import datetime
import os
from bs4 import BeautifulSoup
import numpy
import time
from urllib2 import HTTPError
def error_handler(err):
ex = err['exception']
if isinstance(ex, HTTPError) and ex.code == 503:
time.sleep(random.expovariate(0.1))
return True
amazon = BN.Amazon(AWSKEY,AWSSECRET,AWSID,Region='UK', MaxQPS=0.8, ErrorHandler=error_handler)
isbnclean = '0521663962'
response = amazon.ItemLookup(ItemId=isbnclean, ResponseGroup="Large")
print response
print 'Test Done'
だから、このスクリプトは、私のMac上で完璧に実行し、応答を印刷しますが、R-Piは返しになります、
File "SimpleTest.py", line 24, in <module>
response = amazon.ItemLookup(ItemId=isbnclean, ResponseGroup="Large")
File "/usr/local/lib/python2.7/dist-packages/bottlenose/api.py", line 265, in __call__
{'api_url': api_url, 'cache_url': cache_url})
File "/usr/local/lib/python2.7/dist-packages/bottlenose/api.py", line 226, in _call_api
return urllib2.urlopen(api_request, timeout=self.Timeout)
File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 437, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 550, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 475, in error
return self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 409, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 558, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 400: Bad Request
異なり唯一のことは、それはR-PIでありますfrom urllib2 import HTTPError
は必須ですが、Macでは実行されません。 R-Piでスクリプトを完璧に動かすことができたので、どこが間違っているのか分かりません。