网页新闻抓取(一个完整的网络爬虫基础框架如下图所示:整个架构)

优采云 发布时间: 2021-10-29 21:14

  网页新闻抓取(一个完整的网络爬虫基础框架如下图所示:整个架构)

  一个完整的网络爬虫的基本框架如下图所示:

  

  整个架构有以下几个流程:

  1) 需求方提供需要爬取的*敏*感*词*URL列表,根据提供的URL列表和对应的优先级建立待爬取的URL队列(先到先得);

  2) 根据要爬取的URL队列的顺序进行网页爬取;

  3) 将获取到的网页内容和信息下载到本地网页库,建立爬取的网址列表(用于去除重复和确定爬取过程);

  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服务器维护一个待抓取的URL队列,负责每次将URL分发到不同的从服务器,从服务器负责实际的网页下载工作。Master服务器除了维护要爬取的URL队列和分发URL之外,还负责调解各个Slave服务器的负载。为了避免一些Slave服务器太闲或者太累。

  在这种模式下,Master往往容易成为系统瓶颈。

  2)点对点

  点对点方程的基本结构如图所示:

  

  在这种模式下,所有爬取服务器之间的分工没有区别。每个爬虫服务器都可以从要爬取的URL队列中获取URL,然后得到该URL主域名的hash值H,然后计算H mod m(其中m为服务器数量,上图为例如,m为3),计算出的数字就是处理该URL的主机数。

  示例:假设对于URL,计算器哈希值H=8,m=3,那么H mod m=2,那么编号为2的服务器就会抓取链接。假设此时服务器0获取到了URL,它会将URL转发给服务器2,服务器2就会抓取它。

  这个模型有问题。当服务器崩溃或添加新服务器时,所有 URL 的散列剩余部分的结果将更改。换句话说,这种方法的可扩展性不好。针对这种情况,又提出了另一个改进方案。这种改进的方案是通过一致性哈希来确定服务器上的分工。其基本结构如图:

  

  一致性哈希对URL的主域名进行哈希,映射到0到232之间的一个数字,这个范围平均分配给m台服务器,判断URL主域名哈希运算的取值范围是哪个服务器用于抓取。

  如果某个服务器出现问题,那么应该负责该服务器的网页会顺时针推迟,下一个服务器会被爬取。在这种情况下,如果一个服务器及时出现问题,不会影响其他任务。

  5. 参考内容

  [1] wawlian:网络爬虫基本原理(一)(二);

  [2] guisu:搜索引擎-网络爬虫;

  [3] 《这就是搜索引擎:核心技术详解》。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线