目录
前面内容请移步
资源下载+毕业论文+答辩
4.2 系统异常处理
系统在运行过程中因为复杂的运行环境,可能会产生种种异常问题。
4.2.1 爬虫异常总体概况
爬虫异常总体概况就是能让爬虫的维护人员能及时了解爬虫的整体运行状态,例如当前爬虫是否处于阻塞状态,阻塞的原因是什么,目前已经爬取了多少内容,还有多少内容有待爬取?当前爬虫正在爬取哪个页面?爬虫在进行数据存储的过程中有哪些异常?通过上面的数据可以得到下列结论:
爬虫程序的健壮性。观察爬虫爬取的网页文档数据,通过分析就能够得出爬虫在网页文档数据的时候出现的各种异常问题,便于爬虫系统代码的优化。
爬虫程序的爬取效率。通过log系统记录爬虫爬取网页时打印的Log,经过一些统计整合,可以得出爬虫的数据采集能力究竟有多强,如果采集速度太慢,可以进行一些多线程方面的优化处理,同时也要检查是否是代码某处出的BUG。
爬虫对客体网站的影响。如果发现爬虫运行一段时间后,无法再从某个网站中采集到网页文档数据,这时候就算考虑下是否是爬虫爬取网页文档数据过于频繁而被网站管理员封锁。
4.2.2 爬虫访问网页被拒绝
爬虫大量爬取网站时,会对网站资源占用严重,所以很多网站加入了反爬虫机制,大量爬取网站数据时,会出现Access Denied一类的错误,网页服务器直接拒绝了访问,这时候爬虫就得需要能伪装的像一个真正的浏览器一样,有如下方法:
(1)伪装User-Agent
User-Agent标明了浏览器的类型,以便Web网站服务器能识别不同类型的浏览器。为什么要识别不同类型的浏览器呢?现在主流的优秀浏览器有windows10的Edge浏览器、微软的IE系列浏览器、谷歌的Chrome浏览器、Mozilla的FireFox浏览器,还有来自挪威的Opera浏览器,这些浏览器五花八门,分别出自各自的厂家,所以面对同样的html元素,他们的解析效果有可能是非常不同的,甚至会出现无法解析一些Html元素的情况,正式因为如此,所以Web网站服务器要判断不同的浏览器以便提供不同支持方案(例如CSS中针对不同的浏览器可能需要不同的标注)。
所以现在绝大部分的爬虫为了能够及时获取网站的数据,通常会设置一个某种浏览器的User-Agent以此来“欺骗”网站,告诉Web网站服务器自己是某一种浏览器,然后网站Web服务器才会返回真实的网页数据,一般比较常见几个浏览器的User-Agent如下:
Chrome的User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36
火狐的User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0
IE的User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; rv:11.0) like Gecko
HttpClient设置User Agent的方法如下:
HttpGet getMethod = new HttpGet("URL");
getMethod.setHeader("User-Agent", "user agent内容");