gpt4 book ai didi

python - urllib2:即使出现异常也可以获取 URL 内容

转载 作者:太空宇宙 更新时间:2023-11-04 10:19:37 27 4
gpt4 key购买 nike

我正在向某个 URL 发送一个 POST 请求,然后该 URL 根据参数抛出一个 200 OK401 Unauthorized 代码在 POST 请求中提供。

除了该返回代码之外,该网站还返回一个文本,这在出错时特别有用,因此发出请求的人知道失败的原因。为此,我使用了这段代码:

#/usr/bin/env python

import urllib
import urllib2

url = 'https://site/request'
params = {
'param1': 'value1',
'param2': 'value2',
...
}

data = urllib.urlencode(params)
req = urllib2.Request(url, data)

try:
response = urllib2.urlopen(req)
the_page = response.read()
except urllib2.URLError as e:
print e.code, e.reason # Returns only 401 Unauthorized, not the text

当请求成功时,我得到一个 200 代码,我可以使用 the_page 变量获取消息。在那种情况下非常没用。

但是当它失败时,抛出 URLError 的行是调用 urlopen() 的那行,所以我无法抓取网络错误消息。

有没有办法在 URLError 事件中抓取消息?如果没有,是否有替代方法来执行 POST 请求并在出错时抓取 Web 内容?

在我的例子中,Python 版本是 2.7.6

谢谢

最佳答案

如果您捕获到 HTTPError——它是 URLError 的一个更具体的子类,我认为它会在 401 的情况下被引发——它可以被读取为一个类似文件的对象,产生页面内容:

关于python - urllib2:即使出现异常也可以获取 URL 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33069664/

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