gpt4 book ai didi

python - 即使在发生错误的情况下也检索 HTTPResponse

转载 作者:行者123 更新时间:2023-11-28 23:01:36 35 4
gpt4 key购买 nike

在 Python 中(使用 Python 3.2,但我想它在 Python 2.x 中应该基本相同),我尝试对某个 URL 发出请求。

如果出现访问被拒绝等错误,我会得到一个异常:

>>> request = urllib.request.urlopen(myurl)
...
File "/usr/lib/python3.2/urllib/request.py", line 495, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 401: Unauthorized

但即使出现错误,我也希望看到请求的 header 。

>>> request = urllib.request.urlopen(myurl)
>>> print(request.status)
401
>>> print(request.headers)
...

我还注意到,当页面回复重定向状态代码(如 301)时,我得到的响应是重定向页面,而不是第一个页面(这是我想要的)。

知道我该怎么做吗?

最佳答案

您是否考虑过使用请求包?它为您提供了为满足您的请求而进行的所有重定向的历史记录:

>>> import requests
>>> r = requests.get('http://google.com')
>>> r
<Response [200]>
>>> r.history
[<Response [301]>, <Response [302]>]
>>> r.url
u'http://www.google.co.uk/'

而且它还能理智地处理 401 错误

>>> r = requests.get('http://sitesurgeon.co.uk/!dev/http-authorisation/staff/index.htm')
>>> r
<Response [401]>
>>> r.content
'<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> ...
....'
>>> r.headers
{'date': 'Wed, 06 Jun 2012 14:24:16 GMT', 'x-powered-by': 'PHP/5.3.13', 'transfer-encoding': 'chunked', 'content-type': 'text/html; charset=utf-8', 'www-authenticate': 'Basic realm="Staff Area"', 'server': 'Apache'}

如果您希望控制超时,只需按如下方式提出请求:

requests.get('http://google.com', timeout=0.1)

关于python - 即使在发生错误的情况下也检索 HTTPResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10916065/

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