【发布时间】:2010-12-12 10:28:57
【问题描述】:
我正在使用 urllib2 通过 HTTP 获取页面。有时,当我的请求包含错误时,资源会引发 HTTP 错误 400(错误请求)。但是,该响应还包含一个提供详细错误消息的 XML 元素。能够看到该错误而不仅仅是 urllib2 返回的 HTTPError 异常会非常方便。
如何在异常情况下返回文档内容?
【问题讨论】:
标签: python
我正在使用 urllib2 通过 HTTP 获取页面。有时,当我的请求包含错误时,资源会引发 HTTP 错误 400(错误请求)。但是,该响应还包含一个提供详细错误消息的 XML 元素。能够看到该错误而不仅仅是 urllib2 返回的 HTTPError 异常会非常方便。
如何在异常情况下返回文档内容?
【问题讨论】:
标签: python
你可以read来自HTTPError异常的响应消息。
Python3 示例
import urllib.request
try:
request = urllib.request.Request('http://httpstat.us/418', headers={'Accept': 'text/plain', 'User-Agent': ''})
with urllib.request.urlopen(request) as page:
print('success: ' + page.read().decode())
except urllib.error.HTTPError as httpError:
error = httpError.read().decode()
print('error: ' + error)
【讨论】:
import urllib2
try:
request = urllib2.Request('http://www.somesite.com')
response = urllib2.urlopen(req)
except urllib2.HTTPError as e:
error_message = e.read()
print error_message
【讨论】:
您可以将错误视为响应。
http://www.voidspace.org.uk/python/articles/urllib2.shtml#httperror
当出现错误时,服务器 通过返回 HTTP 错误进行响应 代码和错误页面。您可以使用 HTTPError 实例作为响应 在返回的页面上。这意味着 以及代码属性,它也 有read、geturl和info、方法。
【讨论】: