urllib / urllib2返回的错误代码和实际页面

时间:2009-11-26 13:43:32

标签: python error-handling

urllib / urllib2的正常行为是,如果在响应的标题中发送了错误代码(即404),则引发异常。

你如何根据不同的错误寻找特定的错误,即(40x或50x),做不同的事情。另外,如何读取返回的实际数据HTML / JSON等(数据通常包含与HTML错误代码不同的错误详细信息)

2 个答案:

答案 0 :(得分:9)

当HTTP错误发生时,

urllib2会引发HTTPError。您可以使用异常对象上的code来获取响应代码。您可以使用read()

获取响应数据
>>> req = urllib2.Request('http://www.python.org/fish.html')
>>> try:
>>>     urllib2.urlopen(req)
>>> except urllib2.HTTPError, e:
>>>     print e.code
>>>     print e.read()
>>>
404
<actual data response will be here>

答案 1 :(得分:1)

urllib2 HTTPError异常也是有效的HTTP响应,因此您可以将HTTP错误视为异常事件或有效响应。但是在urllib中,您必须继承URLopener并定义http_error_<code>方法[s]或重新定义http_error_default来处理它们。