聚焦爬虫爬行性能的研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
聚焦爬虫爬行性能的研究

聚焦爬虫爬行性能的研究   摘 要:爬虫作为网页搜索下载程序,其网络爬行性能决定了搜索引擎的性能和数据质量。本文通过分析聚焦爬虫的特点和网络环境,总结出三类制约爬行性能的主要问题,分别是DNS查询及缓存设置、内外部分布式爬行特点和网页URL静态与动态分配策略。结论为聚焦爬虫使用URL静态分配策略结合异步DNS查询及缓存设置,在内部分布式爬行时可有效提高网络爬行性能。   关键词:爬虫 DNS URL分配 分布式爬行   中图分类号:TN711 文献标识码:A 文章编号:1672-3791(2011)07(c)-0013-02      1 引言   爬虫是一个网页自动搜索程序,根据既定的抓取目标,有选择地访问互联网上的网页与相关的链接,获取所需要的信息,为搜索引擎重要组成部分。文献[1]指出,聚焦爬虫与通用爬虫的不同之处在于并不追求大的覆盖面,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询,可实现搜索引擎对Deep Web网页数据的发现和索引。聚焦爬虫采用了一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列,然后根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复以上过程直到到达程序的某一条件时停止,可以有效提高Deep Web数据发现的效率。   一个高性能爬虫需要注重以下几个方面。   1.1 程序执行效率   能抓取目标的描述和定义是决定网页分析算法与URL搜索策略如何制订的基础。而网页分析算法和候选URL排序算法是决定搜索引擎所提供的服务形式和爬虫网页抓取行为、工作有效性、及时性的关键所在。这两个部分的算法又是紧密相关的,决定了爬虫程序的执行效率。   1.2 分布式爬行   文献[2]指出,集中式的爬虫已经不能满足目前互联网的规模,因此支持分布式的爬行,处理和协调好各结点之间的交互,也是一个重要环节。   1.3 硬件条件   由于网络环境及硬件资源、IP地址和带宽等因素造成的爬虫协同工作问题也是造成爬虫工作效率低的重要因素。      2 爬行网络环境   网页分析算法和URL搜索策略是聚焦爬虫程序的两个最重要的组成部分,一定程度上决定了爬虫工作效率的高低。但除此之外,仍有相当一部分工作时间是停留在爬虫选定了某个URL下载网页并打开时。这部分工作时间往往比程序内部的算法分析时间要更长,其重要因素在于URL的无序分配导致网页数据通信缺少优化、分布式爬虫无法有效协同工作等问题。   因此,DNS解析也是网络爬虫的瓶颈之一,因为有些域名请求要经过很多层服务器才能解析到,或者因解析服务器的忙碌而超时。文献[3]指出,DNS查询占用整个爬行的时间高达70%。解决的方法有两种:一是提供DNS缓存,二是建立异步DNS查询模块。在实际应用中一般会综合这两种方法。DNS解析子模块可以单独拿出来放在一台Server上做成DNS服务器,这样可以采用更大的缓存和更多的查询线程。   2.1 DNS缓存服务器   IDC可安装本地DNS缓存服务器,保存爬虫抓取的解析网页的域名与IP映射。default TTL=3600(1hour) (缓存服务器保存记录的时间是1h。也就是告诉DNS保存域的解析记录为1h);将DNS缓存服务器地址加入到爬虫服务器的/etc/resolv.conf中。   2.2 异步DNS查询   (1)创建多个DNS查询线程,每个查询线程调用gethostbyname等同步的API,主线程与查询线程之间通过MessageQueue连接,MessageQueue基于事件通知机制。该方法缺点是实际的并发受限于查询线程的个数。   (2)基于非阻塞socket+事件驱动机制,自行构造和解析DNS报文。这个跟常规的异步网络应用思路一致,但是需要自行编写DNS协议构造和解析代码。      3 分布式爬行   普通单处理机系统受限于CPU的处理能力、磁盘存储的容量,不可能具备处理海量信息的能力,这就要求爬虫支持分布式协同工作。文献[4]指出,一般说来,爬虫的分布式爬行可分为内部分布式爬行和外部分布式爬行。   3.1 内部分布式爬行。   所有的爬行进程在同一个本地网络上运行并通过一个高速连接(如LAN)进行通信,从远程Web站点下载网页时都利用相同的本地网络。采用这种方式,硬件资源扩展方便,几台PC就能增大磁盘容量,提高I/0吞吐量,做成一个小机群,性价比较高。此时,瓶颈主要是在网络出口带宽上。   3.2 外部分布式爬行。   当并行爬行的不同爬行进程在通过Internet相连的地理位置较远的不同地区运行时,则这种爬行为外部分布式爬行。它的优势是网络带宽较富裕,可以就近爬行周围的Web站点,速度较快。在这

文档评论(0)

3471161553 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档