python爬虫时,我们在使用urlopen()或者opener.open()发出请求时,如果这个请求无法得到处理,那么,就会产生错误。常见的错误有URLError、HTTPError以及requests中的SSLError,下面我们来一一结束。
URLError
产生原因:
1,没有网络连接
2,服务器连接失败
3,找不到指定的服务器
我们可以使用try....except....来捕获异常,如下所示:
结果如下:
<urlopen error [Errno 8] nodename nor servname provided, or not known>
原因是找不到指定的服务器
HTTPError
HTTPError是URLError的子类,我们在发送http请求时,服务器上都会有一个应答对象,其中,会包含一个响应状态码。如果不能处理的,会产生一个HTTPError,对应相应的状态码,HTTP状态码表示HTTP协议所返回的响应的状态。其中,100-299表示成功,以3开头的表示重定向,400-599表示失败。
结果为:
404
HTTP Error 404: Not Found
表示服务器无法找到请求,出现这种结果的原因,要么url错误,要么ip被封!
SSLError
requests请求时,如果对方网站是https的,往往需要验证证书。如果SSL证书验证不通过,或者不信任服务器的安全证书,则会报出SSLError。如12306网站。
此时,如果我们又想访问此网站,又不想验证,应该怎么办?我们可以跳过证书的验证。