爬虫抓取网站页面策略
在爬虫系统中,要爬取的URL队列是一个非常关键的部分。爬虫要爬取的网页的URL被组织起来,形成一个队列结构。程序员每次从队列头中拉取某个URL发送给网页下载器下载页面内容时,每个新下载的页面中包含的URL都会被添加到URL队列的末尾进行爬取,从而形成一个循环,可以说整个tracker系统都是由这个队列驱动的。
如何确定要抓取的URL队列中页面的URL顺序?如上所述,新下载页面中包含的链接附加到队列的末尾。这当然是确定队列URL 顺序的一种方法,但不是唯一方法。实际上,可以采用许多其他技术来捕获队列,URL 是排序的。不同的爬虫爬取策略使用不同的方法来确定要爬取的URL 队列中URL 的优先级。
爬虫的跟踪策略有很多种,但不管采用哪种方法,基本目标都是一样的:先选择重要的网页进行爬取。在跟踪系统中,可以通过不同的方法来判断网页的假设重要性,但大多数是根据网页的受欢迎程度来定义的。本书“链接分析”一章介绍的PageRank就是评估网页Common Sex Norms的重要性。
跟踪策略的方法有很多。本部分仅选择已被证明有效或具有代表性的解决方案,包括以下4 类:横截面广度优先策略、不完全PageRank 策略、OCIP 策略和大型优先站点策略。
广泛的优先策略(BreathFirst)
广度游览是一种非常简单直观的游览方式,历史悠久。搜索引擎爬虫一出现就采用了它。最近提出的跟踪策略使用这种方法作为比较的基准。但是需要注意的是,这个策略也是一个非常强大的方法,很多较新的方法不一定比广度优先遍历策略好,所以这个方法也是很多跟踪系统采用的第一个捕获策略,实实在在。
那么什么是振幅旅行第一呢?实际上,前面提到的“将新下载的网页中包含的链接直接追加到待抓取的URL队列底部”,这就是广度优先的想法。即这种方法并没有明确提出和使用衡量网页重要性的标准,而是机械地从新下载的网页中提取链接,加入到待抓取的URL队列中,从而进行排序。网址。图2-7是这种策略的示意图:假设队列顶部的网页是网页1,从网页1中提取3个指向网页2、3、4的链接,并按顺序排列根据编号顺序。跟踪url队列,图中网页的编号就是要爬取的url队列中网页的序号,然后爬虫按照这个顺序下载。
部分PageRank 策略(PartialPageRank)
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。
OCIP策略(在线页面重要性计算)
OCIP的字面意思是“计算在线页面的重要性”,可以认为是一种改进的PageRank算法。在算法开始之前,每个互联网页面都会收到相同的“现金”。每当页面P 被下载时,P 将在该页面包含的链接页面之间平均分配其拥有的“现金”。 “现金”被清空。爬取URL队列中的网页,按照可用现金的多少进行排序,现金最多的网页先下载。 OCIP 在其强大的框架中与PageRank 基本相同。不同的是:PageRank每次都需要迭代计算,而OCIP策略不需要迭代过程,所以计算速度比PageRank快很多,适合实时计算。同时,在计算PageRank的时候,有一个远程跳转到未链接网页的过程,而OCIP没有这个计算因素。实验结果表明OCIP是一种更好的重要性度量策略,效果略好于广度优先横截面策略。
大网站优先(大网站优先)
大网站优先策略很简单:网站衡量网页的重要性。待抓取的URL 队列中的网页根据各自的网站进行排名。如果哪个网站等待下载的页面最多,那么这些链接将被首先下载。基本思想倾向于优先从大型网站下载,因为大型网站往往包含更多页面。由于大型网站通常都是知名公司的内容,他们的网页一般都是高质量的,所以这个想法很简单,但有一定的依据。实验表明,该算法的效果略好于cross-width-first策略。