Python urllib2:在HTTPError异常中读取内容主体?
我正在使用urllib2通过HTTP获取一个页面。有时候,当我的请求有问题时,服务器会返回一个HTTP错误400(错误请求)。不过,这个响应里面也包含一个XML元素,里面有详细的错误信息。如果能看到这个错误信息,而不是仅仅看到urllib2返回的HTTPError异常,那就太好了。
我该怎么做才能在出现异常的情况下仍然获取到文档内容呢?
3 个回答
2
你可以从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)
93
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
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。
54
你可以把错误当作一种响应来处理。
http://www.voidspace.org.uk/python/articles/urllib2.shtml#httperror
当出现错误时,服务器会返回一个HTTP错误代码和一个错误页面。你可以把这个HTTPError实例当作返回的页面上的响应来使用。这意味着除了代码属性外,它还有一些方法,比如read、geturl和info。