论文部分内容阅读
伴随着网络互连技术的发展,原本作为通信设备的手机,成为了目前访问互联网频率最高,数量最多的网络终端设备。随着手机性能的大幅提高,使得以智能手机作为平台,部署网络爬虫程序,对特定主题网站进行数据爬取具有了可行性。本文针对传统爬虫程序存在的IP封锁问题,提出了基于手机的分布式爬虫模型。围绕该模型重点研究和解决以下三个问题:实时通信问题、精准爬取数据问题和大范围快速爬取问题。对于实时通信问题,本文主要解决的工程难题是服务器端与手机端的实时通信。系统将服务器端构建成两个部分,一块是推送消息服务器,另外一块是Web服务器。手机端从消息推送服务器上获得任务推送,并将抓取数据传送给Web服务器。Web服务器根据完成任务情况再次下发任务列表给消息推送服务器。为了实现实时通信,推送端通信协议选取基于可扩展标记语言(XML)的XMPP协议,Web服务器端选用HTTP协议。对于精准爬取数据问题,通过构建垂直爬虫机制和数据清洗来解决。本文采取了两种数据爬取策略,分别是大站优先策略和广度优先策略。通过数据融合方法“清洗”爬取到的数据,补充缺失数据,从而获得准确数据。为了提高数据爬取速度,本文利用了分布式机制,创立了动态任务分配模型,根据节点的负载均衡情况,综合节点手机运算性能、爬虫预计完成任务所需时间、由控制节点达到爬虫节点所需时间等因素,动态的进行任务分配,并用代码实现了动态任务自适应算法。本文基于这些核心机制,利用WebMagic框架,实现了“基于手机的分布式爬虫系统”。该系统在持续的工作条件下可以实现高效快速的数据爬取,解决了IP封锁问题。为验证模型及根据模型所构建出的系统可行性,我们使用多台Android智能手机进行了系统验证。结果表明,该系统能够突破IP封锁限制而且下载效率要高于基于PC的传统爬虫系统。