urllib2 的异常错误处理
在我们用urlopen或opener.open方法发出一个请求时,如果urlopen或opener.open不能处理这个response,就产生错误。这里主要说的是URLError和HTTPError,以及对它们的错误处理。
URLError
URLError 产生的原因主要有:
- 没有网络连接
- 服务器连接失败
- 找不到指定的服务器
我们可以用try except语句来捕获相应的异常。下面的例子里我们访问了一个不存在的域名:
![python爬虫之路2-urllib2 的异常错误处理(HTTP异常响应码大全)](http://p2.ttnews.xyz/loading.gif)
运行结果如下:
urlopen error,错误代码8,错误原因是没有找到指定的服务器。
HTTPError
- HTTPError是URLError的子类,我们发出一个请求时,服务器上都会对应一个response应答对象,其中它包含一个数字"响应状态码"。
- 如果urlopen或opener.open不能处理的,会产生一个HTTPError,对应相应的状态码,HTTP状态码表示HTTP协议所返回的响应的状态。
- 注意,urllib2可以为我们处理重定向的页面(也就是3开头的响应码),100-299范围的号码表示成功,所以我们只能看到400-599的错误号码。
![python爬虫之路2-urllib2 的异常错误处理(HTTP异常响应码大全)](http://p2.ttnews.xyz/loading.gif)
运行结果:
HTTP Error,错误代号是404,错误原因是Not Found,说明服务器无法找到被请求的页面。
通常产生这种错误的,要么url不对,要么ip被封。
由于HTTPError的父类是URLError,所以父类的异常应当写到子类异常的后面,所以上述的代码可以这么改写:
运行结果:404,这样我们就可以做到,首先捕获子类的异常,如果子类捕获不到,那么可以捕获父类的异常。
HTTP响应状态码参考:
机器学习视频下载:关注发私信(机器学习)可获取下载链接
閱讀更多 互聯網奇點 的文章