gpt4 book ai didi

python - 我无法捕获所有请求错误/异常。某些原因导致未知错误

转载 作者:行者123 更新时间:2023-12-01 07:16:23 26 4
gpt4 key购买 nike

我使用 Requests 模块多次 ping 网页。

一开始工作正常,但其中大约 100 个调用停止工作,此后对网站的每个调用都失败。我想不通。

我以为我将其设置为使用 except requests.exceptions.RequestException 捕获所有可能的错误,但发生了其他无法由此捕获的错误。

我不确定您是否需要查看 header ,但它们是:(没有 cookie 或数据。数据插入到 url 字符串中)

headers = {}
headers['Host'] = 'www.wensite.ie'
headers['Connection'] = 'keep-alive'
headers['Accept'] = 'application/json, text/plain, */*'
headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36 OPR/63.0.3368.71'
headers['Sec-Fetch-Mode'] = 'cors'
headers['Sec-Fetch-Site'] = 'same-origin'
headers['Accept-Encoding'] = 'gzip, deflate, br'
headers['Accept-Language'] = 'en-US,en;q=0.9'
cookies = {}
data = {}

还有请求。我的 except 设置为捕获所有错误(我想?)

try:

data = requests.get(f'https://www.website.com/api/search/name/{firstname}/surname/{surname}/eircode/{zipcode}/lang/en',headers = headers,cookies = cookies,data=data,timeout=5)

data = data.json()

if data['results']:
print('**Record Found**\n\n------------------')
return 'record found'
else:
print('record not found\n\n------------------')
return 'record not found'

except requests.exceptions.RequestException as e:
print('Exception Ecountered....\n')
print(str(e))
print('\n------------------')
return str(e)

except:

print('Unknown Error Encountered\n------------------')
return 'Unknown Error'

最后一个 except 是我获取错误消息的地方。在大约 100 次调用中,每次尝试都会导致此错误。感觉这个网站屏蔽了我。但我不应该收到 HTTP 403 错误 或类似的东西吗?

如何诊断此问题以捕获每一个可能的错误?

顺便说一句,这不是官方 api,我正在“抓取”网站,每次调用之间会暂停 2 秒。

最佳答案

您应该不使用异常处理程序来处理请求的错误,而是通过检查状态代码来处理。如果响应内容不是正确的 JSON 对象,您还可以 try catch JSON 解码器错误(首先导入 json):

response = requests.get(f'https://www.website.com/api/search/name/{firstname}/surname/{surname}/eircode/{zipcode}/lang/en', headers=headers, cookies=cookies, data=data, timeout=5)
if response.status_code >= 400:
message = 'Error from server: {} {}'.format(response.status_code, response.reason)
print(message)
return message
try:
data = response.json()
except json.decoder.JSONDecodeError as e:
message = 'Error decoding response content as JSON: {}'.format(e)
print(message)
return message

关于python - 我无法捕获所有请求错误/异常。某些原因导致未知错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57923901/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com