论文部分内容阅读
随着大数据时代的到来,互联网上的数据正在迅速膨胀并变大,数据的采集速度越来越不能满足实际需要。爬虫系统需要抓取的网页数量巨大,如何高效、稳定地抓取网页非常重要。网页分布广及动态变化也使爬虫系统很难保持本地网页时新性,爬虫需要及时更新本地网页,避免网页失效。本文对Nutch爬虫进行改进,将改进后的Nutch和Hadoop分布式平台结合,设计高效、可靠的分布式爬虫系统。主要研究成果如下:1、Nutch和Hadoop分布式平台结合Nutch单机运行时,受限于单台机器存储及运算性能,且易发生单点故障,稳定性差。我们借助Hadoop分布式平台的优点,将Nutch运行的各个步骤提交给Hadoop,使用Map Reduce分布式计算完成,并将数据存储在HDFS上。我们分别对Nutch单机模式和Nutch分布式模式进行实验,实验结果表明:对比单机模式,分布式模式随着集群中节点的增多,Nutch爬行的性能会线性增长;数据安全性提高,可靠性增强,节点间负载均衡。2、提出Proxy IP动态更换模块在详细分析Nutch抓取网页数据的工作流程后,发现当一个网站有以IP为依据的访问检测机制时,Nutch大规模访问很容易被禁止。针对这个问题,提出Proxy IP动态更换模块,与Nutch系统结合,在Nutch爬行被禁止时,更换Proxy IP,使Nutch能继续爬行。经过测试,Nutch的爬虫被禁止爬行得到有效解决。3、网页更新预测优化Nutch有网页更新模块,但网页更新的参数需要人为设定,且对所有网页有效,很难适应海量网页的差异化。本文提出动态选择策略来预测网页更新周期。在网页更新历史数据不足时,通过基于Map Reduce的DBSCAN聚类算法来减少爬虫系统抓取网页数量,将样本网页的更新周期作为所属类其它网页的更新周期;在网页更新历史数据较多时,通过对网页更新历史数据进行泊松过程建模较准确地预测每个网页的更新周期。实验表明,动态选择策略节约了爬虫的抓取资源,且能较准确预测网页的更新周期。