论文部分内容阅读
网络爬虫技术,为获取互联网中的数据提供最为便捷的方式,它不仅是传统搜索引擎公司的底层基础,也是大数据时代获取web数据的利器。近年来,随着互联网技术的迅猛发展,web数据呈指数级增长,面对获取海量web数据的需求,单机网络爬虫技术不再实用,因此,采用分布式的网络爬虫技术成为获取海量web数据的先决条件。随着web前端技术的发展,反爬虫技术的增强,系统复杂性的增大,爬虫爬取数据时还存在一些问题:获取动态网页数据的问题,反网络爬虫的问题,集群稳定性的问题。这些问题,严重影响了爬虫系统获取目标数据(用户所需要的数据)的效率。本文在分布式网络爬虫的基础上,针对这些问题,进行研究并设计解决方案。本文主要工作如下:(1)获取动态网页数据方面:互联网中存在大量异步加载的动态网页数据,这些数据是普通网络爬虫不能直接获取的。目前程序切片方法[21]存在算法复杂度高和精确度低等缺陷,而调用浏览器API的方法[15][16]存在爬取效率低的缺陷。本文提出了一种基于规则库的方法,将网页分类处理,可以获取动态网页和静态网页数据,避免了算法复杂度高和精确度低的缺陷,提高了爬取数据效率。(2)应对反网络爬虫方面:大多数公司会对其网站的数据进行保护,采用各种技术手段,以防止被肆意抓取数据。目前解决反爬虫的策略[13][18],不能应对爬取少量站点中的大量数据。本文设计了 IP代理池策略和类人爬取策略,这些策略采用随机更换代理IP的方法和模仿人访问目标站点的方法,可以绕过反爬虫机制。(3)集群稳定性方面:复杂的集群系统在长期运行中,可能会出现节点不能正常工作或者退出集群系统的现象。目前维护集群稳定性的策略[15][48]存在功能简单、丢失任务等缺陷。本文设计了心跳检测策略和记录丢失任务策略,通过定时监测节点发送的各种消息以及检测丢失的任务,解决节点不正常工作、掉线以及任务丢失等问题。(4)经济成本方面:本文设计的爬虫系统基于灵活订制的开源框架,可以自由删减不必要的功能,从而实现轻量级的系统,使得集群节点可以运行在树莓派(只有信用卡大小的微型电脑,其系统基于Linux)之上,为搭建集群降低了经济成本,以便该系统更实用于预算相对紧张的科研机构、以及中小型企业。最后,通过设置对比实验,本文设计的40个节点的分布式爬虫集群,相比参照实验的单机40个线程的爬虫,性能至少提高了 3-4倍,成本节省了 30%;在获取动态网页数据方面,设置了本文设计策略和参考文献策略[15]的对比试验,实验表明消耗时间减少了约39%;在系统稳定性和反爬虫方面,设置了测试实验,结果表明能够顺利完成大量的爬取任务,系统具有较强的健壮性。综合实验测试结果表明达到了预期效果,并且拥有较好的性能。