爬虫过程中遇到的URLError和HTTPError,以及对它们的处理

**

一、URLError

**
1、URLError 产生的原因主要有:
没有网络连接 、服务器连接失败、找不到指定的服务器
2、requests中的异常在:requests.exceptions
异常有哪些:
requests.exceptions.ConnectionError#未知的服务器
requests.exceptions.ConnectTimeout#连接\读取超时.
requests.exceptions.ProxyError#代理连接不上

我们可以用 try except 语句来捕获相应的异常。下面的例子里我们访问了一个不存在的
域名:

import requests
try:
	response = requests.get(url="http://www.lalalala.com")
	print("有效的url",url)
except request.exceptions.ConnectionError as e :
	print("ConnectionError:\n",e)
except Exception as e:
	print(e)

上述代码会出现一个11004的错误代号,错误原因就是没有获取到一个有效的网址服务器地址
try一下的好处就是:
1.保证程序健壮性.
2.对于有问题数据进行收集,做好留痕工作.

二、HTTPError

HTTPError 是 URLError 的子类,我们发出一个请求时,服务器上都会对应一个 response
应答对象,其中它包含一个数字"响应状态码"。
如果 urlopen 或 opener.open 不能处理的,会产生一个 HTTPError,对应相应的状态码,
HTTP 状态码表示 HTTP 协议所返回的响应的状态。
注意,urllib 可以为我们处理重定向的页面(也就是 3 开头的响应码),100-299 范围的
号码表示成功,所以我们只能看到 400-599 的错误号码
由于 HTTPError 的父类是 URLError,所以父类的异常应当写到子类异常的后面,就是说先
,首先捕获子类的异常,如果子类捕获不到,那么可以捕获父类的异常。

你可能感兴趣的:(python)