Spider的抓取策略?搜索引擎是如何抓取网页的?

本篇文章站长博客介绍Spider的抓取策略?搜索引擎是如何抓取网页的?

在大型搜索引擎Spider的抓取过程中会有很多策略,有时也可能是多种策略综合使用。这里简单介绍一下比较简单的Spider抓取策略,以辅助大家对Spider工作流程的理解。Spider抓取网页,在争取抓取尽可能多网页的前提下,首先要注意的就是避免重复抓取,为此Spider程序一般会建立已抓取URL列表和待抓取URL列表(实际中是由哈希表来记录URL的两个状态)。在抓取到一个新页面时,提取该页面上的链接,并把提取到的链接和已抓取URL列表中的链接进行逐一对比,如果发现该链接已经抓取过,就会直接丢弃,如果发现该链接还未抓取,就会把该链接放到待抓取URL队列的末尾等待抓取。

(l)已经抓取过的页面,即Spider已经抓取过的页面。

(2)待抓取页面,也就是这些页面的URL已经被Spider加入到了待抓取URL队列中,只是还没有进行抓取。

(3)可抓取页面,Spider根据互联网上的链接关系最终是可以找到这些页面的,也就是说当下可能还不知道这些页面的存在,但是随着Spider增量型的抓取,最终会发现这些页面的存在。

(4)暗网中的页面,这些网页和表层网络上的网页是脱钩的,可能这些页面中有链接指向以上三类网页,但是通过以上三类网页并不能找到这些页面,比如,网站内需要手动提交查询才能获得的网页,就属于暗网中的网页,据估计暗网要比非暗网大几个数量级。

全文搜索引擎的spider一直致力于抓取全网的数据,现在Spider对于非暗网网页已经具备大量高效的抓取策略。对于暗网的抓取,各个搜索引擎都在努力研究自己不同的暗网Spider抓取策略,百度对此推出了“阿拉丁”计划,鼓励有优质资源的网站把站内资源直接以XML文件的形式提交给百度,百度会直接进行抓取和优先排名显示。这里主要讨论Spider针对非暗网中网页的抓取策略。

当Spider从一个入口网页开始抓取时,会获得这个页面上所有的导出链接,当Spider随机抓取其中的一个链接时,同样又会收集到很多新的链接。此时Spider面临一个抓取方式的选择:()先沿着一条链接一层一层地抓取下去,直到这个链接抓到尽头,再返回来按照同样的规则抓取其他链接,也就是深度优先抓取策略。

还是先把入口页面中的链接抓取一遍,把新发现的URL依次进行入库排列,然后对这些新发现的页面进行遍历抓取,再把最新发现的RL进行入库排列等待抓取,依次抓取下去,也就是广度优先抓取策略。

深度优先策略

深度优先策略即一条道走到黑,当沿着一个路径走到无路可走时,再返回来走另一条路。如图2-3所示为深度优先抓取策略的示意图,假设A页面为Spider的入口,Spider在A页面上发现了1、7、11三个页面的链接,然后Spider会按照图中数字所标示的顺序依次进行抓取。当第一条路径抓到3页面时到头了,就会返回2页面抓取第二条路径中的4页面,在4页面也抓到头了,就会返回1页面抓取第三条路径中的5页面,并顺着一路抓下去,抓到头后会按照之前的规则沿一条一条路径抓下去。

广度优先策略

广度优先策略即Spider在一个页面上发现多个链接时,并不是一条道走到黑,顺着一个链

接继续抓下去,而是先把这些页面抓一遍,然后再抓从这些页面中提取下来的链接。如图2-4

所示为广度优先抓取策略的示意图,假设A页面为Spider的入口,Spider在A页面上发现了l、2、3三个页面。当抓完1网页时,只是把1网页中4和5网页的链接放入待抓取URL列表,并不会继续抓1页面中的其他链接,而是抓2页面。当b级页面抓取完成时,才会抓取从b级页面中提取到c级页面中的4、5、6、7、8、9六个页面,等c级页面抓取完成后,再抓取从c级页面中提取到的d级新页面,依次持续抓取下去。

理论上Spider不论采用深度优先策略还是广度优先策略,只要时间足够,都可以把整个互联网上的网页抓取一遍。但是搜索引擎本身的资源也是有限的,快速抓取全互联网有价值的页面只是一种奢望而已,所以搜索引擎的Spider不是只使用一种策略无限地抓取新页面,而是采用两种策略相结合的方式来进行抓取。一般Spider可以在域名级别的页面使用广度优先抓取策略,尽可能地收集更多的网站。在网站内页级别一般会根据网站的权重综合使用广度和深度优先抓取策略,也就是说网站的权重越高,抓取量也会越大,刚上线的网站可能只会被抓一个首页。这可能也是很多新网站在一定时间内,在搜索引擎中只被索引首页的原因之一。

上面讨论的两个策略是站在Spider只是单纯想抓取全互联网数据的基础上,所需要选择的策略。实际在搜索引擎中,虽然Spider在尽力保证抓取页面的全面性,但是由于自身资源有限,所以在尽力抓取全网的同时,还要考虑对重要页面的优先抓取。这个“重要页面”的定义应该是指在互联网中比较重要的页面,该页面内容应该具有影响力比较大、需要了解该内容的网民比较多或时效传播性比较强的特点。体现到抓取策略上,就是这个页面的导入链接很多,或者是权重高的大站中的网页。总结来说,就是两个策略:重要网页优先抓取策略和大站链接优先抓取策略。

(1)重要页面优先抓取策略

一般认为页面的重要性,除了受寄主站点本身的质量和权重影响以外,就看导入链接的多少和导入链接的质量了。Spider抓取层面上的“重要页面”一般由导入的链接来决定。在前面所讨论的抓取策略中,Spider一般都会把新发现的未抓取过的URL依次放到待抓取URL队列的尾端,等待Spider按顺序抓取。在重要页面优先抓取的策略中就不是这样的了,这个待抓取URL队列的顺序是在不断变化的。排序的依据一般是:页面获得的已抓取页面链接的多少和链接权重的高低。

(2)大站优先策略

大站优先策略,这个思路很简单。被搜索引擎认定为“大站”的网站,一般有着稳定的服务器、良好的网站结构、优秀的用户体验、及时的资讯内容、权威的相关资料、丰富的内容类型和庞大的网页数量等特征,当然也会相应地拥有大量高质量的外链。也就是在一定程度上可以认定这些网站的内容就可以满足相当比例网民的搜索请求,搜索引擎为了在有限的资源内尽最大的努力满足大部分普通用户的搜索需求,一般就会对大站进行“特殊照顾”。因此大家可以看到新浪、网易类网站上自主发布的内容几乎都会被百度秒收,因为百度搜索的Spider在这些网站上应该是7×2小时不间断抓取的。如果有新站的链接出现在这些网站的重要页面上,也会相应地被快速抓取和收录。曾经有朋友试验新站秒收的策略:把新站的链接推到一些大站的首页,或挂到大站首页所推荐的页面中,效果还是很不错的。

这两个策略与前面所讨论的广度优先策略和深度优先策略相结合的抓取方式是有共通点的。比如,从另一个角度来看,如果Spider按照前两个策略抓取,一个页面获得的导入链接越多,被提前抓到的几率就越大,也就是和重要页面优先抓取是趋同的;在Spider资源有限的情况下广度优先策略和深度优先策略的结合分配本身就会以站点的大小进行区别对待,大网站的页面有着先天的高重要程度,往往也容易获得更多的链接支持。所以宏观来看,这几个策略在抓取表现上有相近之处,在实际的抓取过程中相辅相成。

相对于整个互联网的网页来说,Spider的资源再充足也是有限的,所以优秀的Spider程序应该首先保证对重要网页的抓取,然后才是尽力抓取尽可能全的互联网网页信息。由此也可以看出依靠外部链接来引导Spider和提升网站权重,以及依靠内容长期运营网站权重的重要性。

文章为作者独立观点,不代表站长派立场,本文链接:https://zhanzhangpai.com/?p=1106

免责声明:本站部分内容来源互联网整理,如有侵权请联系站长删除。站长邮箱:1245911050@qq.com

(0)
上一篇 2022年2月22日 上午8:28
下一篇 2022年2月22日 上午8:35

相关推荐