php 爬虫抓取网页数据( 图片来源网络抓取策略(一)(1)_光明网(组图))
优采云 发布时间: 2022-03-30 03:07php 爬虫抓取网页数据(
图片来源网络抓取策略(一)(1)_光明网(组图))
图片来源网络
抓取策略
在爬虫系统中,待爬取的 URL 是非常重要的部分。需要爬虫爬取的网页的URL排列在其中,形成队列结构。调度器每次从队列头部取出URL,发送给网页下载器下载页面内容。,每个新下载的网页中收录的URL都会被附加到待爬取URL队列的末尾,从而形成一个爬取循环,整个爬虫系统可以说是由这个队列驱动的。
URL队列中待爬取的页面URL的顺序是如何确定的?如上所述,将新下载页面中收录的链接附加到队列末尾。虽然这是一种确定队列中 URL 顺序的方法,但它不是唯一的方法。事实上,也可以采用许多其他技术。获取的 URL 已排序。爬虫的不同爬取策略使用不同的方法来确定待爬取URL队列中URL的优先级顺序。
爬虫的爬取策略有很多,但不管是什么方法,基本目标都是一样的:优先选择重要的网页进行爬取。在爬虫系统中,所谓网页的重要性可以通过不同的方法来判断,但大多是根据网页的流行度来定义的。
爬取策略的方法虽然有很多种,但这里只对已经证明有效或者比较有代表性的方案进行说明,包括以下四种:广度优先遍历策略、不完全PageRank策略、OPIC策略和大站点优先策略。
01 广度优先遍历策略
广度优先遍历策略是一种非常简单直观的遍历方法,历史悠久。自搜索引擎爬虫出现以来,它就被采用了。新提出的爬取策略经常以这种方法为基准。但值得注意的是,这种策略也是一种非常强大的方法。很多新方法的实际效果不一定比广度优先遍历策略好,所以这个方法其实是目前很多爬虫采用的第一个爬取策略。
如前所述,“将新下载的网页中收录的URL附加到待爬取URL队列的末尾”,这就是广度优先遍历的思想。也就是说,该方法没有明确提出并以网页的重要性作为衡量标准,只是机械地从新下载的网页中提取链接,并作为下载的URL序列附加到待爬取的URL队列中。下图是这个策略的*敏*感*词*: 假设队列最前面的网页是1号网页,从1号网页中提取三个链接分别指向2号、3号和1号. 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值。如果是PageRank值高的页面,先下载URL。
下图是不完全PageRank策略的简化*敏*感*词*。我们为每下载 3 个网页设置一个新的 PageRank 计算。此时{P1,P2,P3}3个网页已经下载到本地,这3个网页中收录的链接指向{P4,P5,P6},形成了一个待抓取的URL队列。如何决定下载顺序?将六个网页组成一个新的集合,并为该集合计算PageRank值。这样,P4、P5和P6就得到了它们对应的PageRank值,可以从大到小排序得到它们的下载顺序。这里可以假设下载顺序为:P5、P4、P6,下载P5页面时,提取链接指向P8页面。此时,一个临时的 PageRank 值被分配给 P8。如果这个值大于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队列中待爬取的网页,按照所属的网站进行分类。如果有任何 网站 正在等待下载,如果页面数量最多,则将首先下载这些链接。基本思路是先下载大网站,因为大网站往往收录更多页面。鉴于大型网站往往是知名公司的内容,其网页质量普遍较高,这个思路虽然简单,但有一定的依据。实验表明,该算法的效果略好于广度优先遍历策略。
网页更新策略
互联网的动态特性是其显着特征。随时出现新页面,更改页面内容或删除原创页面。对于爬虫来说,即使任务完成,也不必在本地爬取网页,也能体现互联网的动态性。本地下载的页面可视为互联网页面的“镜像”,爬虫应尽可能保证一致性。可以假设这样一种情况:一个网页被删除或者内容发生了重大变化,而搜索引擎对此一无所知,仍然按照旧的内容进行排序,作为搜索结果提供给用户。用户体验还不错。不言而喻。因此,对于已经爬取的网页,
网页更新策略的任务是决定何时重新爬取下载的网页,使本地下载的网页和互联网上的原创网页的内容尽可能一致。常用的网页更新策略有三种:历史参考策略、用户体验策略和整群抽样策略。
01历史参考策略
历史参考策略是最直观的更新策略,它基于以下假设:过去频繁更新的网页,未来也会频繁更新。因此,为了估计网页何时更新,可以参考历史更新情况来做出决定。
这种方法经常使用泊松过程来对网页的变化进行建模。根据每个网页过去的变化,该模型用于预测未来内容何时再次发生变化,从而指导爬虫的爬取过程。不同的方法有不同的侧重点。例如,一些研究将网页划分为不同的区域。爬取策略应忽略广告栏或导航栏等不重要区域的频繁变化,重点关注内容变化检测和建模。优越的。
02用户体验策略
一般来说,搜索引擎用户提交查询后,可能会有上千条相关搜索结果,而用户没有耐心等着查看后面的搜索结果,可能只会看前3页搜索内容。用户体验策略就是利用用户的这一特性来设计更新策略。
此更新策略以用户体验为中心。即使本地索引的网页内容已经过时,如果不影响用户体验,以后更新这些过时的网页也不错。因此,最好根据网页内容的变化(通常以搜索结果的排名变化来衡量)带来的搜索质量变化来判断网页何时更新。影响力越大的网页,更新速度越快。
用户体验策略保存网页的多个历史版本,根据过去每次内容变化对搜索质量的影响取一个平均值,作为判断爬虫重新访问时机的参考抓取网页。网页,优先级越高是计划重新抓取。
03 整群抽样策略
上面介绍的两种网页更新策略在很大程度上依赖于网页的历史更新信息,这是后续计算的基础。然而实际上,对于每个网页保存其历史信息,搜索系统会增加很多额外的负担。换个角度看,如果是第一次爬取的网页,因为没有历史信息,不可能按照这两种思路估计更新周期。为解决上述不足,提出了整群抽样策略。
聚类抽样策略认为网页具有一些属性,可以根据这些属性预测更新周期,属性相似的网页具有相似的更新周期。因此,可以根据这些属性对网页进行分类,同一类别内的网页具有相同的更新频率。为了计算某个类别的更新周期,只需要对该类别中的网页进行采样,将这些采样的网页的更新周期作为该类别中所有网页的更新周期。与上述两种方法相比,该策略一方面不需要为每个网页保存历史信息;另一方面,对于新的网页,即使没有历史信息,
下图描述了聚类抽样策略的基本流程。首先,根据网页的特点,将它们聚合到不同的类别中,每个类别中的网页具有相似的更新周期。从类别中提取一部分最具代表性的网页(一般是提取离类别中心最近的那些网页),并计算这些网页的更新周期,然后将这个更新周期用于该类别中的所有网页类别,然后可以根据网页的类别使用更新周期。确定其更新周期。
整群抽样策略
网页更新周期的属性特征分为静态特征和动态特征两类。静态特征包括:页面内容、图片数量、页面大小、链接深度、PageRank值等十几个;而动态特征则反映了静态特征随时间的变化,比如图片数量的变化、进出链接的变化等。网页可以根据这两类特征进行聚类。
上图是一个比较笼统的过程,不同的算法在一些细节上有差异。例如,一些研究直接省略了聚类步骤,而是使用网站作为聚类单元,即假设属于同一个网站的网页具有相同的更新周期,则< @网站 采样,计算更新周期,然后网站 中的所有网页都会以这个更新周期为准。虽然这个假设是粗略的,因为很明显同一个网站内的网页的更新周期变化很大,但是可以省略聚类步骤,这样计算效率会更高。
相关实验表明,聚类采样策略优于前两种更新策略,但对亿万网页进行聚类非常困难。
如果你对爬虫感兴趣,还可以阅读:
干货全流程| 入门级爬虫技术原理,这就够了
网络爬虫 | 你不知道的暗网是怎么爬的?
网络爬虫 | 你知道分布式爬虫是如何工作的吗?