搜索引擎如何抓取网页(1.网络爬虫技术基本工作流程和抓取策略(组图))

优采云 发布时间: 2021-10-30 09:14

  搜索引擎如何抓取网页(1.网络爬虫技术基本工作流程和抓取策略(组图))

  阅读目录

  

  随着互联网的蓬勃发展,互联网被称为信息的主要载体,如何在互联网上采集信息是互联网领域面临的一大挑战。什么是网络爬虫技术?网络爬虫技术其实就是指网络数据的爬取,因为网络中数据的爬取是一种关联性爬取,它像蜘蛛一样在互联网上四处爬行,所以我们形象地称之为网络爬虫技术。其中,网络爬虫又被称为网络机器人或网络追逐者。网络爬虫技术是搜索引擎架构中最基础的数据技术。通过网络爬虫技术,我们可以将互联网上数百亿的网页信息保存在本地,形成镜像文件,为整个搜索引擎提供数据支持。

  1. 网络爬虫技术的基本工作流程和基础架构。网络爬虫获取网页信息的方式与我们通常使用浏览器访问网页的方式完全相同。它们是根据 HTTP 协议获取的。该过程主要包括以下几个步骤: 1) 连接DNS域名服务器,解析要获取的URL的域名(URL------>IP);2) 根据HTTP协议,发送HTTP请求获取网页内容。一个完整的网络爬虫的基本框架如下图所示:

  

  整个架构有以下流程: 1) 需求方提供需要爬取的*敏*感*词*URL列表,根据提供的URL列表和对应的优先级建立待爬取的URL队列(先到先得) ; 2)根据要爬取的URL顺序进行网页爬取;3)将获取到的网页的内容和信息下载到本地的web库,建立爬取的URL列表(用于去重和判断爬取的过程);4)将抓取到的网页放入待抓取的URL队列,进行循环抓取操作;

  2. 网络爬虫的爬取策略在爬虫系统中,要爬取的URL队列是一个非常重要的部分。URL队列中要爬取的URL按什么顺序排列也是一个很重要的问题,因为这涉及到先爬取哪个页面,后爬哪个页面的问题。确定这些 URL 顺序的方法称为抓取策略。下面重点介绍几种常见的爬取策略: 1) 深度优先遍历策略 深度优先遍历策略很容易理解,和我们有向图中的深度优先遍历是一样的,因为网络本身是一种图形。模型。深度优先遍历的思路是从一个起始页开始爬,然后根据链接一个一个爬,直到不能再爬,返回上一页以继续跟踪链接。有向图中深度优先搜索的示例如下所示:

  

  

  上图左图是有向图的*敏*感*词*,右图是深度优先遍历的搜索过程*敏*感*词*。深度优先遍历的结果是:

  

  2)广度优先搜索策略广度优先搜索和深度优先搜索的工作方式是完全相对的。思路是将新下载的网页中找到的链接直接插入到要爬取的URL队列的末尾。即网络爬虫会先抓取起始网页中链接的所有网页,然后选择其中一个链接的网页,继续抓取该网页中链接的所有网页。

  

  上图是上例的有向图的广度优先搜索流程图。遍历的结果是: v1→v2→v3→v4→v5→v6→v7→v8 从树结构上看,图的广度优先遍历是遍历树的层次结构。3) 反向链接搜索策略 反向链接数是指一个网页上其他网页指向的链接数。反向链接的数量表示网页内容被他人推荐的程度。因此,很多时候搜索引擎的爬取系统都会使用这个指标来评估网页的重要性,从而决定不同网页的爬取顺序。在真实的网络环境中,由于存在广告链接和作弊链接,反向链接的数量不能完全等待其他人的重要性。因此,搜索引擎通常会考虑一些可靠的反向链接。4)大站优先策略是根据网站所属的URL队列对所有要爬取的网页进行分类。网站需要下载的页面较多,优先下载。这种策略因此被称为大站优先策略。5) 其他搜索策略一些比较常用的爬虫搜索侧率还包括Partial PageRank搜索策略(根据PageRank得分确定下一个爬取的URL)、OPIC搜索策略(也是一种重要性排名)。最后必须指出的是,我们可以根据自己的需要设置网页的抓取间隔,

  3. 网络爬虫更新策略

  互联网是实时变化的,是高度动态的。网页更新策略主要是决定什么时候更新之前下载过的页面。常见的更新策略有以下三种: 1)历史参考策略,顾名思义,就是根据页面的历史更新数据来预测页面未来什么时候会发生变化。一般来说,预测是通过泊松过程建模进行的。2)用户体验策略

  尽管搜索引擎可以针对某个查询条件返回大量结果,但用户往往只关注结果的前几页。因此,爬虫系统可以先更新那些实际在查询结果前几页的网页,然后再更新后面的那些网页。此更新策略还需要历史信息。用户体验策略保留网页的多个历史版本,并根据过去每次内容变化对搜索质量的影响取平均值,并以此值作为决定何时重新抓取的依据。

  3)聚类采样策略 前面提到的两种更新策略有一个前提:需要网页的历史信息。这种方式存在两个问题:第一,如果系统为每个系统保存多个版本的历史信息,无疑会增加系统的负担;第二,如果新网页根本没有历史信息,就无法确定更新策略。该策略认为网页有很多属性,属性相似的网页可以认为更新频率相似。计算某一类网页的更新频率,只需对该类网页进行采样,并将其更新周期作为整个类别的更新周期。基本思路如图:

  

  4. 分布式爬虫系统结构 一般来说,爬虫系统需要面对整个互联网上亿万个网页。单个爬虫不可能完成这样的任务。通常需要多个抓取程序来一起处理。一般来说,爬虫系统往往是分布式的三层结构。如图所示:

  

  底层是分布在不同地理位置的数据中心。在每个数据中心,有多个爬虫服务器,每个爬虫服务器可能部署了多套爬虫程序。这就构成了一个基本的分布式爬虫系统。对于数据中心不同的抓取服务器,有以下几种方式协同工作: 1)Master-Slave 主从的基本结构如图:

  

  对于主从模式,有一个专门的Master服务器维护一个待抓取的URL队列,负责每次将URL分发到不同的从服务器,从服务器负责实际的网页下载工作。Master服务器除了维护要爬取的URL队列和分发URL之外,还负责调解各个Slave服务器的负载。为了避免一些Slave服务器太闲或者太累。在这种模式下,Master往往容易成为系统瓶颈。2) Peer to Peer的基本结构如图:

  

  在这种模式下,所有爬取服务器之间的分工没有区别。每个爬虫服务器都可以从要爬取的URL队列中获取URL,然后得到该URL主域名的hash值H,然后计算H mod m(其中m为服务器数量,上图为例如,m为3),计算出的数字为处理该URL的主机号。例如:假设对于URL,计算器hash值为H=8,m=3,则H mod m=2 ,所以数字为2 服务器爬取链接,假设此时URL是服务器0获取的,会将URL转发给服务器2,服务器2会爬取。这个模型有问题,当服务器崩溃或添加新服务器,那么所有 URL 的哈希余数的结果将不得不更改。也就是说,这种方法的可扩展性不好。针对这种情况,提出了另一个改进计划。这种改进方案是通过一致性哈希来确定服务器分工。其基本结构如图:

  

  一致性哈希对URL的主域名进行哈希,映射到0到232之间的一个数字,这个范围平均分配给m台服务器,判断URL主域名哈希运算的取值范围是哪个服务器用于抓取。如果某个服务器出现问题,那么应该负责该服务器的网页会顺时针推迟,下一个服务器会被爬取。在这种情况下,如果一个服务器及时出现问题,不会影响其他任务。

  5. 参考内容[1] wawlian:网络爬虫的基本原理(一)(二);

  [2] guisu:搜索引擎-网络爬虫;[3] 《这就是搜索引擎:核心技术详解》。

  -结束 -

  

  ☞

  ☞☞☞☞☞

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线