分布式爬虫任务调度与AJAX页面抓取研究
发布时间:2017-04-20 10:16
本文关键词:分布式爬虫任务调度与AJAX页面抓取研究,,由笔耕文化传播整理发布。
【摘要】:随着互联网的迅速发展,数据呈现爆炸性增长,同时人们对数据的采集需求也与日俱增。网络爬虫作为数据获取的有效手段被广泛应用于各类系统中,诸如搜索引擎、舆情监控系统等。然而,面向中小规模系统的网络爬虫面临着两大难题:其一,单机爬虫程序抓取速度慢,已有的开源分布式爬虫框架实现复杂,灵活性不强;其二,虽然Ajax技术以异步加载的方式与服务器交换必要的数据能够提高用户界面响应速度,带来良好的用户体验,但是传统的网页抓取方式无法完整的获取应用了这项技术的页面所包含的信息。这些缺失的信息通常具有重要的研究价值。在面向中小规模系统的分布式爬虫中,任务调度算法的优劣将直接影响系统的抓取效率。因此,本文重点对分布式爬虫的任务调度策略和Ajax页面抓取算法进行了研究。在分布式爬虫的任务调度方面,本文重点研究了主从式架构下的任务调度算法。为了保证各个爬行节点的负载均衡以及系统的可扩展性,本文提出了一种基于一致性哈希的均分负载空间算法。该算法采用了不同于机器节点复制的虚拟节点添加方法,以解决在机器数量较少的情况下系统负载不均衡问题。中心节点在把握系统整体运行状态的基础上采用该算法进行任务调度,并在爬行节点发生变化后进行相应的任务调整。通过实验比较,验证了该算法在负载均衡效率方面获得了提高。在Ajax页面抓取方面,由于单个Ajax页面中包含了许多状态,本文首先采用了经典的状态流图对Ajax页面进行建模,然后提出了基于网页主体内容变化的重复状态检测算法,并利用该算法进行有效元素的XPath特征训练,最后将训练后的结果应用到Ajax页面抓取中。通过实验比较,验证了该方法在保证获取所有数据的情况下能够进一步地减少事件触发总数,缩短页面抓取所消耗的时间,提高了Ajax页面抓取效率。最后,本文提出了支持Ajax页面抓取的分布式爬虫系统总体设计方案,并详细介绍了中心节点和爬行节点各模块的实现细节。通过将分布式爬虫系统成功的应用到网络舆情监控项目中,验证了本文所提出技术的有效性。
【关键词】:分布式爬虫 任务调度 一致性哈希 Ajax爬虫 状态流图模型
【学位授予单位】:电子科技大学
【学位级别】:硕士
【学位授予年份】:2015
【分类号】:TP393.092
【目录】:
- 摘要5-6
- ABSTRACT6-11
- 第一章 绪论11-17
- 1.1 研究背景及意义11-12
- 1.2 国内外研究现状12-15
- 1.2.1 分布式爬虫任务调度研究现状12-14
- 1.2.2 Ajax页面抓取研究现状14-15
- 1.3 主要研究内容15-16
- 1.4 章节安排16-17
- 第二章 相关技术介绍17-30
- 2.1 分布式爬虫关键技术17-23
- 2.1.1 分布式爬虫系统架构18-20
- 2.1.2 任务调度策略20-23
- 2.1.3 更新调度策略23
- 2.2 Ajax爬虫关键技术23-29
- 2.2.1 Ajax动态加载技术23-24
- 2.2.2 Ajax网站建模与抓取策略24-27
- 2.2.3 动态脚本解析27-29
- 2.2.3.1 JavaScript引擎27-28
- 2.2.3.2 嵌入式浏览器28-29
- 2.3 本章小结29-30
- 第三章 基于主从式架构的任务调度策略30-45
- 3.1 一致性哈希算法30-35
- 3.1.1 一致性哈希的基本概念30-31
- 3.1.2 分布式缓存Memcached的一致性哈希算法实现31-33
- 3.1.3 一致性哈希算法存在的不足33-35
- 3.2 基于一致性哈希的均分负载空间算法35-38
- 3.3 基于均分负载空间算法的任务调度策略38-41
- 3.3.1 任务划分策略38-39
- 3.3.2 任务调度策略39-41
- 3.4 分布式爬虫负载均衡性能实验41-44
- 3.4.1 实验设置41
- 3.4.2 实验结果与分析41-44
- 3.5 本章小结44-45
- 第四章 基于状态流图的Ajax页面抓取45-62
- 4.1 状态流图模型45-51
- 4.1.1 状态流图定义45-46
- 4.1.2 基于状态流图的深度优先抓取算法46-49
- 4.1.3 算法存在的主要不足49-51
- 4.2 算法改进51-55
- 4.2.1 基于网页主体内容的重复状态检测51-53
- 4.2.1.1 网页主体内容提取51-53
- 4.2.1.2 重复状态检测53
- 4.2.2 有效元素的XPath特征训练53-55
- 4.2.2.1 页面元素的XPath特征53-54
- 4.2.2.2 基于主体内容变化的有效元素XPath特征训练54-55
- 4.3 优化后的算法55-57
- 4.4 实验比较57-61
- 4.4.1 实验设置57
- 4.4.2 实验结果与分析57-61
- 4.5 本章小结61-62
- 第五章 分布式爬虫系统设计与实现62-74
- 5.1 总体设计62
- 5.2 中心节点的设计方案62-66
- 5.2.1 种子URLs管理模块63
- 5.2.2 心跳监测模块63-64
- 5.2.3 任务调度模块64-66
- 5.3 爬行节点的设计方案66-70
- 5.3.1 数据抓取模块66-69
- 5.3.1.1 静态页面抓取模块67-68
- 5.3.1.2 动态页面抓取模块68
- 5.3.1.3 非爬取范围内的页面处理模块68-69
- 5.3.2 任务调整模块69-70
- 5.3.2.1 任务转移模块69-70
- 5.3.2.2 任务添加模块70
- 5.3.3 更新调度模块70
- 5.4 系统运行展示70-71
- 5.5 系统应用71-73
- 5.6 本章小结73-74
- 第六章 总结与展望74-76
- 6.1 总结74
- 6.2 展望74-76
- 致谢76-77
- 参考文献77-81
- 攻读硕士学位期间取得的成果81-82
【参考文献】
中国期刊全文数据库 前2条
1 叶允明,于水,马范援,宋晖,张岭;分布式Web Crawler的研究:结构、算法和策略[J];电子学报;2002年S1期
2 袁威;薛安荣;周小梅;;基于Nutch的分布式爬虫的优化研究[J];无线通信技术;2014年03期
本文关键词:分布式爬虫任务调度与AJAX页面抓取研究,由笔耕文化传播整理发布。
本文编号:318458
本文链接:https://www.wllwen.com/guanlilunwen/ydhl/318458.html