XML地图 黑帽SEO培训为广大SEO爱好者提供免费SEO教程,致力于SEO优化、SEO服务
首页 > SEO资讯 » 网络爬虫抓取策略

网络爬虫抓取策略

2018-10-10T12:09:30 | 人围观 | 关键词:网络爬虫抓取策略--SEO培训


  网络爬虫抓取策略
 

  在爬虫系统中,待抓取URL队列是很关键的部分,需要爬虫抓取的网页URL在其中顺序排列,形成一个队列结构,调度程序每次从队列头取出某个URL,发送给网页下载器下载页面内容,每个新下载的页面包含的URL会追加到待抓取URL队列的末尾,如此形成循环,整个爬虫系统可以说是由这个队列驱动运转的。
 

  待抓取URL队列中的页面URL顺序是如何确定的?上面所述将新下载页面中包含的链接追加到队列尾部,这固然是一种确定队列URL顺序的方法,但并非唯一的手段,事实上,还可以采纳很多其他技术,将队列中待抓取的URL进行排序。而爬虫的不同抓取策略,就是利用不同的方法来确定待抓取URL队列中URL优先顺序的。
 

  爬虫的抓取策略有很多种,但不论方法如何,其基本目标一致:优先选择重要网页进行抓取。在爬虫系统中,所谓网页的重要性,其评判标准可以选择不同方法,但是大部分都是按照网页的流行性来定义的,在本书的“链接分析”一章介绍的PageRank就是评价网页重要性的常用标准。
 

  抓取策略方法众多,本节只选择已经被证明效果较好或者是比较有代表性的解决方案,包括以下4种:宽度优先遍历策略、非完全PageRank策略、OCIP策略及大站优先策略。
 

  2.4.1 宽度优先遍历策略(Breath First)
 

  宽度优先遍历是一种非常简单直观且历史也很悠久的遍历方法,在搜索引擎爬虫一出现就开始采用,新提出的抓取策略往往会将这种方法作为比较基准。但应该注意到的是,这种策略也是一种相当强悍的方法,很多新方法实际效果不见得比宽
 

  在爬虫系统中,待抓取URL队列是很关键的部分,需要爬虫抓取的网页URL在其中顺序排列,形成一个队列结构,调度程序每次从队列头取出某个URL,发送给网页下载器下载页面内容,每个新下载的页面包含的URL会追加到待抓取URL队列的末尾,如此形成循环,整个爬虫系统可以说是由这个队列驱动运转的。
 

  待抓取URL队列中的页面URL顺序是如何确定的?上面所述将新下载页面中包含的链接追加到队列尾部,这固然是一种确定队列URL顺序的方法,但并非唯一的手段,事实上,还可以采纳很多其他技术,将队列中待抓取的URL进行排序。而爬虫的不同抓取策略,就是利用不同的方法来确定待抓取URL队列中URL优先顺序的。
 

  爬虫的抓取策略有很多种,但不论方法如何,其基本目标一致:优先选择重要网页进行抓取。在爬虫系统中,所谓网页的重要性,其评判标准可以选择不同方法,但是大部分都是按照网页的流行性来定义的,在本书的“链接分析”一章介绍的PageRank就是评价网页重要性的常用标准。
 

  抓取策略方法众多,本节只选择已经被证明效果较好或者是比较有代表性的解决方案,包括以下4种:宽度优先遍历策略、非完全PageRank策略、OCIP策略及大站优先策略。
 

  2.4.1 宽度优先遍历策略(Breath First)
 

  宽度优先遍历是一种非常简单直观且历史也很悠久的遍历方法,在搜索引擎爬虫一出现就开始采用,新提出的抓取策略往往会将这种方法作为比较基准。但应该注意到的是,这种策略也是一种相当强悍的方法,很多新方法实际效果不见得比宽
 

  按照网页的重要性排序的。之所以如此,有研究人员认为:如果某个网页包含很多入链,那么更有可能被宽度优先遍历策略早早抓到,而入链个数从侧面体现了网页的重要性,即实际上宽度优先遍历策略隐含了一些网页优先级假设。
 

  2.4.2 非完全PageRank策略(Partial PageRank)
 

  PageRank是一种著名的链接分析算法,可以用来衡量网页的重要性(技术细节请参考本书“链接分析”一章)。很自然地,可以想到用PageRank的思想来对URL优先级进行排序。但是这里有个问题,PageRank是个全局性算法,也就是说当所有网页都下载完成后,其计算结果才是可靠的,而爬虫的目的就是去下载网页,在运行过程中只能看到一部分页面,所以在抓取阶段的网页是无法获得可靠PageRank得分的。
 

  如果我们仍然坚持在这个不完整的互联网页面子集内计算PageRank呢?这就是非完全PageRank策略的基本思路:对于已经下载的网页,加上待抓取URL队列中的URL一起,形成网页集合,在此集合内进行PageRank计算,计算完成后,将待抓取URL队列里的网页按照PageRank得分由高到低排序,形成的序列就是爬虫接下来应该依次抓取的URL列表。这也是为何称之为“非完全PageRank”的原因。
 

  如果每次新抓取到一个网页,就将所有已经下载的网页重新计算新的非完全PageRank值,明显效率太低,在现实中是不可行的。一个折中的办法是:每当新下载的网页攒够K个,然后将所有下载页面重新计算一遍新的非完全PageRank。这样的计算效率还勉强能够接受,但是又引来了新的问题:在展开下一轮PageRank
 

  计算之前,从新下载的网页抽取出包含的链接,很有可能这些链接的重要性非常高,理应优先下载,这种情况该如何解决?非完全PageRank赋予这些新抽取出来但是又没有PageRank值的网页一个临时PageRank值,将这个网页的所有入链传导的PageRank值汇总,作为临时PageRank值,如果这个值比待抓取URL队列中已经计算出来PageRank值的网页高,那么优先下载这个URL。
 

  图2-8是非完全PageRank策略的一个简略示意图。我们设定每下载3个网页即进行新的PageRank计算,此时已经有{P1,P2,P3}3个网页下载到本地,这3个网页包含的链接指向{P4,P5,P6},形成了待抓取URL队列,如何决定其下载顺序?将这6个网页形成新的集合,对这个集合计算PageRank值,这样P4、P5和P6就获得自己对应的PageRank值,由大到小排序,即可得出其下载顺序。这里可以假设顺序为:P5、P4、P6,当下载P5页面后抽取出链接,指向页面P8,此时赋予P8临时PageRank值,如果这个值大于P4和P6的PageRank,则接下来优先下载P8。如此不断循环,即形成了非完全PageRank策略的计算思路。

 

  
 

  非完全PageRank看上去相对复杂,那么是否效果一定优于简单的宽度优先遍历策略呢?不同的实验结果存在争议,有些表明非完全PageRank结果略优,有些实验结果结论则恰恰相反。更有研究人员指出:非完全PageRank计算得出的重要性与完整的PageRank计算结果差异很大,不应作为衡量抓取过程中URL重要性计算的依据。
 

  2.4.3 OCIP策略(Online Page Importance Computation)
 

  OCIP的字面含义是“在线页面重要性计算”,可以将其看做是一种改进的PageRank算法。在算法开始之前,每个互联网页面都给予相同的“现金”(cash),每当下载了某个页面P后,P将自己拥有的“现金”平均分配给页面中包含的链接页面,把自己的“现金”清空。而对于待抓取URL队列中的网页,则根据其手头拥有的现金金额多少排序,优先下载现金最充裕的网页。OCIP从大的框架上与PageRank思路基本一致,区别在于:PageRank每次需要迭代计算,而OCIP策略不需要迭代过程,所以计算速度远远快于PageRank,适合实时计算使用。同时,PageRank在计算时,存在向无链接关系网页的远程跳转过程,而OCIP没有这一计算因子。实验结果表明,OCIP是种较好的重要性衡量策略,效果略优于宽度优先遍历策略。
 

  2.4.4 大站优先策略(Larger Sites First)
 

  大站优先策略思路很直接:以网站为单位来衡量网页重要性,对于待抓取URL队列中的网页,根据所属网站归类,如果哪个网站等待下载的页面最多,则优先下载这些链接。其本质思想倾向于优先下载大型网站,因为大型网站往往包含更多的页面。鉴于大型网站往往是著名企业的内容,其网页质量一般较高,所以这个思路虽然简单,但是有一定依据。实验表明这个算法效果也要略优于宽度优先遍历策略。
 

相关内容推荐:

Top