网页抓取解密( 图片来源网络抓取策略(一)(1)_光明网(组图))

优采云 发布时间: 2021-10-14 01:12

  网页抓取解密(

图片来源网络抓取策略(一)(1)_光明网(组图))

  

  图片来源网络

  爬取策略

  在爬虫系统中,要爬取的URL是一个非常关键的部分。爬虫需要爬取的网页的网址排列在其中,形成一个队列结构。调度器每次从队列的头部取出URL,发送给网页下载器下载页面内容。,每个新下载的网页中收录的URL都会被追加到待爬取的URL队列的末尾,从而形成一个爬行循环,整个爬虫系统可以说是由这个队列驱动的。

  如何确定要抓取的URL队列中页面URL的顺序?如上所述,新下载页面中收录的链接将附加到队列的末尾。虽然这是一种确定队列的 URL 顺序的方法,但它不是唯一的方法。事实上,可以采用许多其他技术来保持队列等待被捕获。取URL进行排序。爬虫的不同爬取策略使用不同的方法来确定要爬取的 URL 队列中 URL 的优先级。

  爬虫的爬取策略有很多种,但不管采用哪种方式,基本目标都是一样的:首先选择重要的网页进行爬取。在爬虫系统中,所谓的网页重要性可以通过不同的方法来判断,但大多是按照网页的流行程度来定义的。

  爬取策略的方法虽然有很多,但这里仅列举被证明有效或具有代表性的解决方案,包括以下四种:广度优先遍历策略、不完全PageRank策略、OPIC策略、大站优先策略。

  01 广度优先遍历策略

  广度优先遍历策略是一种非常简单直观的遍历方法,历史悠久。搜索引擎爬虫一出现就被采用。新提出的爬取策略往往使用这种方法作为比较的基准。不过值得注意的是,这个策略也是一个非常强大的方法,很多新方法的实际效果不一定比广度优先遍历策略好,所以这个方法其实是很多爬虫采用的第一种爬行策略。

  前面说过,“新下载的网页中收录的URL会被追加到待抓取的URL队列的末尾”,这就是广度优先遍历的思想。也就是说,该方法并没有明确提出和使用网页的重要性作为衡量标准,而是机械地从新下载的网页中提取链接,作为URL的下载顺序附加到待抓取的URL队列中。下图是这个策略的*敏*感*词*: 假设队列头部的网页是1号网页,从1号网页中提取3个分别指向2号、3号、4号的链接,因此它们按要捕获的数字顺序排列。在取队列中,图中网页的编号为待取队列中页面的序号,

  实验表明,这种策略效果很好。虽然看起来很机械,但实际的网络抓取顺序基本上是按照网页的重要性排序的。为此,有研究人员认为,如果一个网页收录多个传入链接,则更容易被广度优先遍历策略及早捕获,而传入链接的数量从侧面反映了该网页的重要性,即,实际的宽度优先遍历策略 以上也暗示了一些网页优先级假设。

  

  广度优先遍历策略

  02 PageRank 策略不完整

  PageRank 是一种著名的链接分析算法,可用于衡量网页的重要性。自然可以想到使用PageRank的思想来对URL的优先级进行排序。但是这里有一个问题。PageRank 是一种全局算法,这意味着当所有网页都被下载时,计算结果是可靠的。爬虫的目的是下载网页,运行时只能看到部分网页。,所以在爬行阶段的网页无法获得可靠的PageRank分数。

  如果我们仍然坚持在这个不完整的 Internet 页面子集中计算 PageRank 怎么办?这就是不完全PageRank策略的基本思想:对于下载的网页,将要爬取的URL队列中的URL加入到一个网页集合中,在其中计算PageRank,计算完成后,URL要抓取的队列将排队。里面的网页按照PageRank分数从高到低排序,形成的顺序就是爬虫接下来要爬取的URL列表。这就是为什么它被称为“不完整的 PageRank”。

  如果每次抓取一个新的网页,所有下载的网页都重新计算为一个新的不完整的PageRank值,这显然效率太低,在现实中是不可行的。一个折衷的方法是:每当有足够K个新下载的网页时,对所有下载的网页重新计算一个新的不完整PageRank。这种计算效率勉强可以接受,但又带来了一个新问题:在开始下一轮PageRank计算之前,提取新下载网页中收录的链接。很有可能这些链接的重要性非常高,应该优先考虑。下载,这种情况怎么解决?不完整的 PageRank 会为这些新提取的没有 PageRank 值的网页分配一个临时的 PageRank 值。本网页所有链接内传输的 PageRank 值汇总为临时 PageRank 值。如果这个值大于在要爬取的 URL 队列中计算的值,如果 PageRank 值高的页面出来,那么这个 URL 会先被下载。

  下图是不完全PageRank策略的*敏*感*词*。我们为每下载 3 个网页设置一个新的 PageRank 计算。此时,本地已经下载了3个网页{P1,P2,P3},这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 在爬行过程中的重要性的依据。

  

  不完整的 PageRank 策略

  03 OPIC战略

  OPIC字面意思是“在线页面重要性计算”,可以看作是一种改进的PageRank算法。在算法开始之前,每个互联网页面都被给予相同的“*敏*感*词*”。每当一个页面P被下载,P就会将自己拥有的“*敏*感*词*”平均分配给该页面所收录的链接页面,并将自己的“*敏*感*词*”分配给“空”。对于URL队列中待抓取的网页,它们是按照手头的*敏*感*词*量排序,*敏*感*词*最多的网页先下载。OPIC在其大框架上与PageRank基本相同。区别在于:PageRank每次都需要迭代计算,而OPIC策略不需要迭代过程,所以计算速度比PageRank快很多,适合实时计算。同时,在计算PageRank时,有一个远程跳转到没有链接关系的网页的过程,而OPIC没有这个计算因素。实验结果表明,OPIC是一种较好的重要性度量策略,其效果略好于广度优先遍历策略。

  04 大站优先策略

  大站优先策略的思路很简单:以网站为单位来衡量网页的重要性。对于URL队列中待抓取的网页,根据各自的网站进行分类,如果等待下载的是哪个网站,如果页面最多,先下载这些链接。本质思想倾向于优先下载大的网站,因为大的网站往往收录更多的页面。鉴于大型网站往往是知名公司的内容,而且他们的网页一般都是高质量的,这个想法很简单,但是有一定的依据。实验表明,该算法的效果略好于宽度优先遍历策略。

  网页更新策略

  互联网的动态特性是其显着特征。随时出现新页面,更改页面内容或删除现有页面。对于爬虫来说,并不是在本地抓取网页,即使完成了任务,也必须体现互联网的动态性。本地下载的页面可以看作是互联网页面的“镜子”,爬虫应该尽量保证一致性。可以假设这样一种情况:某个网页被删除或者内容发生了重大变化,搜索引擎仍然不知道这个引擎,仍然按照旧内容进行排序,作为搜索结果提供给用户。用户体验还不错。不言而喻。因此,对于已经爬取过的网页,

  网页更新策略的任务是决定何时重新抓取下载的网页,使本地下载的网页内容尽可能与互联网上的原创网页一致。常用的网页更新策略有3种:历史参考策略、用户体验策略和聚类抽样策略。

  01 历史参考策略

  历史参考策略是最直观的更新策略。它基于这样一个假设,即过去经常更新的网页在未来也会经常更新。因此,为了估计某个网页的更新时间,可以参考历史更新情况进行判断。

  这种方法经常使用泊松过程来对网页的变化进行建模。根据每个网页过去的变化,该模型用于预测未来内容何时会再次发生变化,以指导爬虫的抓取过程。不同的方法有不同的侧重点。例如,一些研究将网页划分为不同的区域。爬取策略应忽略广告栏或导航栏等不重要区域的频繁变化,专注于内容变化检测和建模。优越的。

  02用户体验策略

  一般来说,搜索引擎用户提交查询后,可能会有上千条相关的搜索结果,但用户没有耐心等待看到排名靠后的搜索结果,可能只看前3页的搜索内容。用户体验策略就是利用用户的这个特性来设计更新策略。

  此更新策略以用户体验为中心。即使本地索引的网页内容已经过时,如果不影响用户体验,那么以后更新这些过时的网页也是可以的。因此,判断网页何时更新取决于网页内容的变化(通常以搜索结果排名的变化来衡量)带来的搜索质量的变化。网页的影响越大,应该更新得越快。

  用户体验策略保存网页的多个历史版本,并根据过去每次内容变化对搜索质量的影响取平均值,作为判断爬虫何时重新抓取网页的参考依据。网页的影响越严重,就越优先安排重新抓取。

  03 整群抽样策略

  上面介绍的两种网页更新策略很大程度上依赖于网页的历史更新信息,因为这是后续计算的基础。但实际上,要为每个网页保存历史信息,搜索系统会增加很多额外的负担。从另一个角度来说,如果是第一个被爬取的网页,因为没有历史信息,无法按照这两个思路来估计更新周期。为了解决上述不足,提出了聚类抽样策略。

  聚类抽样策略认为网页具有一些属性,可以根据这些属性预测其更新周期。具有相似属性的网页具有相似的更新周期。因此,可以根据这些属性对网页进行分类,并且同一类别的网页具有相同的更新频率。为了计算某个类别的更新周期,只需对该类别中的网页进行采样,并将这些采样网页的更新周期作为该类别中所有网页的更新周期。与前面介绍的两种方法相比,该策略一方面不需要为每个网页保存历史信息;另一方面,对于新的网页,即使没有历史信息,也可以根据所属类别进行更新。

  下图描述了集群抽样策略的基本流程。首先,根据网页的特点,将它们聚合到不同的类别中,每个类别中的网页都有相似的更新周期。从类别中提取出一部分最具代表性的网页(通常是提取离类别中心最近的那些网页),计算这些网页的更新周期,然后将该更新周期用于该类别中的所有网页,然后可以基于网页的类别 确定其更新周期。

  

  聚类抽样策略

  网页更新周期的属性特征分为静态特征和动态特征两大类。静态特征包括:页面内容、图片数量、页面大小、链接深度、PageRank值等十几个;而动态特征则反映了静态特征随时间的变化,例如图像数量的变化、图像数量的变化、链内和链外的变化。等待。基于这两种特征,可以对网页进行聚类。

  上图是一个比较笼统的过程,不同的算法在一些细节上有差异。例如,有的研究直接省略了聚类步骤,而是使用网站作为聚类单元,即假设属于同一网站的网页具有相同的更新周期,则其中的网页网站是Sampling,计算更新周期,然后网站中的所有网页都会遵循这个更新周期。虽然这个假设很粗略,因为很明显同一网站内的网页更新周期变化很大,但是可以省略聚类步骤,这样计算效率会更高。

  相关实验表明,聚类采样策略优于前两种更新策略,但对亿万网页进行聚类也非常困难。

  如果你对爬虫感兴趣,还可以阅读:

  全程干货| 爬虫技术原理入门,看这篇文章就知道了

  网络爬虫 | 你不知道的暗网是如何爬取的?

  网络爬虫 | 你知道分布式爬虫是如何工作的吗?

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线