python - 覆盖 urllib2.HTTPError 或 urllib.error.HTTPError 并读取响应 HTML

标签 python urllib2 urllib http-error

我收到“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

最佳答案

HTTPError is a file-like object .你可以捕捉它,然后读取它的内容。

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

关于python - 覆盖 urllib2.HTTPError 或 urllib.error.HTTPError 并读取响应 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2233687/

相关文章:

python - 在 Python 列表中查找 "x"最大差异

python - HTTP403 错误 urllib2.urlopen(URL)

python - Web 抓取 - 如何通过 Angular.js 访问以 JavaScript 呈现的内容?

Python:我可以使用 urllib 导入 json 文件的切片吗?

python - 使用 header 中的 API key 执行 GET API 调用的正确方法?

python - 如果我开始返回更多数据,则返回不会破坏客户端代码的不可打包值的可迭代对象

python - 为什么Python 3 pickle无法读取Python 2 pickle数据?

python - 使用 urllib2 节流

python - Scrapy:重试图像下载后出现错误10054