urllib / urllib2的正常行为是,如果在响应的标题中发送了错误代码(即404),则引发异常。
你如何根据不同的错误寻找特定的错误,即(40x或50x),做不同的事情。另外,如何读取返回的实际数据HTML / JSON等(数据通常包含与HTML错误代码不同的错误详细信息)
答案 0 :(得分:9)
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
来处理它们。