小编典典

覆盖urllib2.HTTPError或urllib.error.HTTPError并始终读取响应HTML

python

我收到“ HTTP错误500:内部服务器错误”响应,但是我仍然想读取错误HTML中的数据。

使用Python 2.6,我通常使用以下命令获取页面:

import urllib2
url = "http://google.com"
data = urllib2.urlopen(url)
data = data.read()

尝试在失败的URL上使用它时,出现异常urllib2.HTTPError

urllib2.HTTPError: HTTP Error 500: Internal Server Error

如何urllib2在返回内部服务器错误的同时获取此类错误页面(带有或不带有)?

请注意,在Python 3中,相应的例外是urllib.error.HTTPError


阅读 159

收藏
2020-12-20

共1个答案

小编典典

HTTPError
是一个类似文件的对象。您可以先捕获它,然后捕获它read的内容。

try:
    resp = urllib2.urlopen(url)
    contents = resp.read()
except urllib2.HTTPError, error:
    contents = error.read()
2020-12-20