我目前正在使用python请求库与使用json的外部API进行交互。 每个端点都通过(api类的)方法工作,并使用collect_data方法。请求库和http错误
但是我希望刮板在遇到http错误时继续运行(理想情况下将其输出到日志中)。
什么是为当前,当我使用http.raise_for_status它只是打破做到这一点的最好办法()
好像我应该使用try /除了以某种方式,但不知道如何最好地在这里做到这一点?
def scrape_full_address(self, house_no, postcode):
address_path = '/api/addresses'
address_url = self.api_source + address_path
payload = {
'houseNo': house_no,
'postcode': postcode,
}
return self.collect_data(url=address_url, method='get', payload=payload)
def collect_data(self, url, method, payload=None):
if method == 'get':
data = None
params = payload
elif method == 'post':
params = None
data = payload
response = getattr(requests, method)(url=url, params=params, json=data, headers=self.headers)
if response.status_code == 200:
return response.json()
else:
return response.raise_for_status()
你能提供你得到确切的错误输出? –
我得到一个HTTPerror:'raise HTTPError(http_error_msg,response = self) requests.exceptions.HTTPError:500服务器错误:URL的内部服务器错误:.....' – Yunti
您应该看看Kerry Hatcher的答案。 –