高性能网络爬虫系统的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2019年4月
件实力较强的大型企业,应该在这方面做出更多的努力和贡献,推动小基站的发展走向成熟。
3总结
目前,各厂商相继推出了自家第一代或第二代小基站产品,系统也日渐完善,预计后续将会有更丰富的产品形态面市。运营商深度覆盖将在2015年逐步展开,2016年开始增量,2017年完成大部分场景的覆盖。小基站是深度覆盖的有效发展方案,针对这一工程项目的建设发展,还需要解决一些关键性问题,才能推动小基站建设的有效实现,切实提升通信质量和效率。
参考文献
[1]唐耀生.LTE数字直放站在深度覆盖中的施工方案研究[J].江苏通信,2017,33(03):48-50+54.
[2]袁康鹏,赵霞,王业通,俞沁璐.网络数据在数字直放站中融合传输
的设计[J].系统仿真技术,2015,11(01):57-62+68.
[3]梁长松.基于MIMO的LTE数字直放站技术研究及系统应用[J].电
子世界,2013(17):14-15.
[4]李学易,郝禄国,杨建坡,马绍轩.同频数字直放站回波干扰消除器
的设计[J].电视技术,2010,34(07):16-19.
[5]李莉金,梅顺良.数字直放站锁相源的杂散问题解决方案[J].微计算
机信息,2008(15):1-2+8.
[6]任姝婕,吴泽民,都明,郑军.3G数字直放站传输接口标准的分析[J].现代电子技术,2005(23):7-9+13.
收稿日期:2019-3-11
高性能网络爬虫系统的设计与实现
宗靖芯(西安交通大学附属中学,陕西省西安市710043)
【摘要】随着互联网的迅速发展,网络承载着大量的信息,但在这些信息里如何有效的提取并利用它们成为技术发展的关键点。因为用户在使用互联网的时候经常有不同的检索要求,但是检索引擎所返回的结果中往往含有许多用户不关心的网页及信息,所以定向抓取相关网页的爬虫系统应运而生。但是现在网络上的主流爬虫系统有的配置复杂,用户难以上手如Heritrix,或有的只能爬取特定字段,限于个别浏览器使用。所以为了优化爬虫系统,本文提出了一套高性能的定向网络爬虫系统,意在提高爬取数据的效率和准确度,并在初步实验中取得了较好成果。
【关键词】分布式;高可用;网络爬虫
【中图分类号】TP391.3【文献标识码】A【文章编号】1006-4222(2019)04-0078-02
1引言及研究背景
随着互联网技术的迅速发展,网络承载了大量的信息,如何有效地提取并利用这些信息成为一个巨大的挑战。在众多传统的搜索引擎如Google Yahoo Alta Vista等,这些常用辅助人们检索信息的工具作为访问互联网的渠道和入口,也有一定的局限性。比如:①检索引擎所返回的结果中往往含有许多用户不关心的网页及信息;②在进行网络检索时,我们希望的是尽可能大的网络覆盖率,但是在有限的搜索引擎服务器资源和无限的网络数据资源之间由于资源配置的不同,所以他们之间的矛盾进一步加深。为了解决以上问题,定向抓取相关网页资源的爬虫系统应运而生。
爬虫系统可以自动下载相关网页,根据相应的信息及人们发出的指令制定所要抓取目标。它可以有选择性的访问互联网上的网页与相关的链接,然后再解密出所需要的信息数据。在经过了实践研究以及用户上手的市场调研后,网络爬取逐渐从通用爬虫转变到聚焦爬虫。在不断进化的过程中,爬虫系统起先并不那么追求较大的网络发概率,而是将目标定为爬取与某一特定主题内容相关的信息,并为主体的用户准备查询的数据资源。
从爬虫技术发展的历史来看,第一个爬虫程序诞生于1993年,是由麻省理工学院的学生马休·格雷所编写。此时爬
虫只是一种自动抓取网页信息的机器人的简称,但格雷在写爬虫程序时,起初目的却并不是为了做搜索引擎,但是却为搜索引擎发展提供了坚实的基础。在搜索引擎技术发展中爬虫的算法越来越复杂,在设计中逐渐向多策略、负载均衡及大规模增量抓取等方面来发展。爬虫算法的优化成果,可以涉及到整个互联网中。而且有些被删除的网页也可以通过爬虫程序内的“网页快照”功能实现访问及恢复。
爬虫的应用前景也十分广阔。比如将爬虫应用到数据挖掘中,来获取数据背后隐藏的价值信息;高性能的爬虫技术在处理海量的数据时往往发挥十分重要的作用。而且分布式技术的应用也能帮助处理海量数据,并当数据存储较散不能集中到一起时发挥重要的集群及搜寻作用。未来爬虫也将在人工智能、模式识别和机器学习等领域大展身手。
2现有爬虫系统的分析
现有的网络爬虫系统有很多如Watij、JRex、JSoup再到后来的Htpp Client和目前的Html Unit,这些系统各有优劣,其中用来评判的标准大多为同一网页的获取时间、解析时间、存储信息时对内存和CPU的占用,及是否支持脚本等。爬虫系统可以应用在大规模的数据爬取,可以从网页中抓取各式各样自己需要的数据,相当于能够自动访问互联网并将网站内容下载下来的程序或脚本,也相当于一个没有图形页面的独立浏览器。
但是因为爬虫系统运行时间过长,所以如果它没有良好的框架结构,就会影响到后续数据的存储。主流爬虫系统的缺点有:①系统严重依赖XPath,不能判别所爬取信息的重要度和价值;②爬虫采用插件模式,系统在每个站点都设置了一个插件,可以用此来保证爬取数据的准确性,但是由于爬取广度小所以系统缺乏在大规模的网络中爬取的能力;③系统不支持集群化的数据处理;④在爬取时由于采用关系型数据库,所以没有使用NOSQL固定的数据库;⑤系统不支持robots协议可能侵犯信息所有人权益所以基于以上缺点,我提出了一种高性能的分布式网络爬虫模型。
3实验思路
3.1模板爬虫的框架策略
通信设计与应用78
2019年4月
由于网页爬取具有数据量大,更新频率快,页面是动态的特征。所以网页爬取用以下四种策略组合效果最佳:
(1)挑选策略:确定需要获取的页面和数据。
(2)检查重复策略:在每隔相同的时间段内爬取数据并检查是否更新。
(3)扩容策略:加密数据缩小文件内存并避免站点超容。
(4)高性能策略:协同运行以达到分布式爬取的最优效果。
综合上述策略,我提出以下思路:
(1)设计爬虫架构,让应用端和系统端分离,提高系统的解耦性。
(2)实现去重策略,保持高效率,高准确率。
(3)数据存储+数据预处理的优化。
在原来定向爬取的基础上加上全网爬取,再用到主题识别技术、网页切片技术和网页权重分析技术,以此达到爬虫自动跟踪链接,抽取文本的作用。之后再为爬虫加入robots协议的支持,让我们的爬取变得合法化。采用apache和hadoop来做分布式的爬虫,让之可以支持集群的应用。由于URL数据存储在关系型数据库中对爬虫性能的影响十分明显,所以要用MongoDB来取代关系型数据库来管理URL数据。最后按照所写的有关网页分析的算法,先预测预备爬取URL与之前目标主题的相关性,或与网页的相似度,并选取最符合要求的一个或几个URL进行抓取。
3.2整体爬虫框架及爬取流程
在宏观上来讲先从万维网上选取所要的网页,并打开源代码得到当前的URL,并将其传送到爬虫系统中,再经过下载页面进一步传送到爬虫程序中进行数据的分辨与整理,之后由爬虫程序发送URL请求到爬虫系统中判断此URL是否为之前所爬取过的网页,实现爬去应用的定向爬取。最后再将所需要爬取的URL存入系统,并由Redis等其他组件进行加密。
3.3爬虫管理器和任务执行过程
从具体算法优化的角度进行分析,在上一部进入爬虫应用后,把URL的请求传送到爬虫管理器中,再将每个URL发送给相对应的下载器,但在这里要注意合理排序,否则会引起系统记忆错乱。之后将下载信息传回爬虫应用中查看是否重复爬取,若是重复的则设置一个用MD5加密的字符串来记录,防止下一次的重复爬取,若是新的则再返还给下载器进行下载。其中有两点要注意:①DNS解析器,它会将域名解析成IP地址,进行URL的储存。②robots.txt这种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的爬虫的采集限制。当想单独定义搜索引擎的漫游器访问子目录时,可以使用robots元数据,或将自定义的设置合并到根目录下的robots.txt中。最终可以在Berkeley DB也就是我们的数据库中检测到所有的爬取信息。
模板处理器的原理是:模板由5个模块共同构成,各自处理不同的任务。当一个URL服务器从磁盘文件上读取URL 列表后,将其转发到爬虫系统上。每个爬虫程序单独在一台电脑上运行,且采用单线程异步10的方式,每一次可以维持连续300个链接的并行爬取。之后爬虫系统将网页传输到存储服务器上压缩并保存。其中的索引进程是从HTML页面中抽取链接,最后存放到不同的文件中。但经过优化后改进为①采用自有的文件系统(GFS)和数据库系统(Big Table)来存取数据;
②采用Map Reduce技术来分布式处理各种数据的运算。最终
实现高性能的爬取结构。
3.4去重原理的应用
为了信息的广度以及新鲜性,会在相隔一定的时间进行大网站数据的重新爬取。在加速系统爬取的部分,系统端采取去重原理,防止对网页进行重复爬取,得到当前url时,通过MD5的方式将其转换为较短的加密字符串,后用redis服务器来实现是否为之前爬取过的程序的快速识别。MD5算法是一种加密算法,同时它也是基于Hash的一种算法。当运行该算法时要对URL字符串进行压缩,然后得到一个压缩的字符串,另外我们可以直接得到一个来自Hash的地址。其中,MD5算法可以够将任何字符串压缩为128位整数,并反映为物理地址。
4实验总结
在经过了以上的优化后,我的初步试验取得了较好的成果。
在实验中,爬虫程序的执行时间长达4d,在这段时间内,爬行器没有停止运行。第一次爬行时,我同时对软件做了进一步的更改。最后,经实验结果发现,持续的爬行速度约为每秒140个网页内容,并且爬取的数据准确率较高,并未大面积出现空值或者非法值,总体上,本文提出的分布式网络爬虫框架实现初期提出的高可用性和,并保准了数据的准确率。
5总结和对未来的展望
综上所述,本文的核心思想是做到在高性能的前提下,将爬虫系统在速度与容量方面进行统一的优化,最终达到爬取的广度性与高效性。
在未来,希望加强对数据库的算法编写,并把爬取逻辑进一步完善。并且,希望可以将我写的高性能的网络爬虫运用到实际生活中,通过对某个领域的数据进行爬取,再通过后期的数据挖掘来进一步学习相关知识,并依据数据做出一套方便人们生活的软件。
参考文献
[1]Ling Z,Yun-Ming Y E,Hui S,etal.Design and Implementation of a Distributed High-Performance Web Crawler[J].Journal of Shanghai Jiao⁃tong University,2004,38(1):59-61.
[2]汪涛,樊孝忠.主题爬虫的设计与实现[J].计算机应用,2004,24 (s1):270-272.
[3]郑冬冬,赵朋朋,崔志明.DeepWeb爬虫研究与设计[J].清华大学学
报(自然科学版),2005,45(9):1896-1902.
[4]周德懋,李舟军.高性能网络爬虫:研究综述[J].计算机科学,2009,36 (8):26-29.
[5]刘汉兴,刘财兴.主题爬虫的搜索策略研究[J].计算机工程与设计, 2008,29(12):3160-3162.
收稿日期:2019-3-16
通信设计与应用79