搜索引擎优化外包(一个完整的网络爬虫基本框架图(图))
优采云 发布时间: 2022-01-16 02:08搜索引擎优化外包(一个完整的网络爬虫基本框架图(图))
一个完整的网络爬虫的基本框架如下图所示:
整个架构有以下流程:
1)需求方提供待爬取的*敏*感*词*URL列表,根据提供的URL列表和对应的优先级(先到先得)建立待爬取URL队列;
2) 根据待爬取的URL队列排名爬取网页;
3)将获取到的网页内容和信息下载到本地网页数据库,建立爬取的URL列表(用于爬取过程的去重和判断);
4)将爬取的网页放入URL队列进行爬取,进行循环爬取操作;
2.网络爬虫的爬取策略
在爬虫系统中,待爬取的 URL 队列是一个重要的部分。URL队列中要爬取的URL的排列顺序也是一个重要的问题,因为它涉及到先爬到哪个页面,然后再爬到哪个页面。确定这些 URL 顺序的方法称为爬取策略。下面重点介绍几种常见的爬取策略:
1)深度优先遍历策略
深度优先遍历策略很好理解,与我们的有向图中的深度优先遍历相同,因为网络本身就是一个图模型。深度优先遍历的思想是从一个起始网页开始爬取,然后一个接一个地去跟踪链接,直到不能再爬取,然后返回上一个网页继续跟踪链接。
有向图中的深度优先搜索示例如下:
上图左图是有向图的*敏*感*词*,右图是深度优先遍历的搜索过程*敏*感*词*。深度优先遍历的结果是:
2)广度优先搜索策略
广度优先搜索和深度优先搜索的工作方式相反。这个想法是将在新下载的网页中找到的链接直接插入到要抓取的 URL 队列的末尾。即网络爬虫会先爬取起始页面中的所有链接页面,然后选择其中一个链接页面,继续爬取该页面中的所有链接页面。
上图是上面有向图的广度优先搜索流程图。遍历结果如下:
v1v2 v3 v4 v5 v6 v7 v8
从树结构的角度来看,图的广度优先遍历是树的层次遍历。
3)反向链接搜索策略
反向链接的数量是指其他网页指向的网页链接的数量。反向链接的数量表明网页内容被其他人推荐的程度。因此,在很多情况下,搜索引擎的爬取系统会使用这个指标来评估网页的重要性,从而确定不同网页的爬取顺序。
在真实的在线环境中,由于广告链接和欺骗性链接的存在,反向链接的数量不能完全等待我和他的重要性。所以搜索引擎倾向于考虑一些可靠的反向链接。
4)大网站优先策略
URL队列中所有待爬取的网页都按照它们的网站进行分类。对于需要下载大量页面的网站,请先下载。因此,这种策略被称为大站点优先策略。
5)其他搜索策略
一些常用的爬虫搜索辅助率还包括部分页面排名搜索策略(根据页面排名分数确定下一个要爬取的 URL)和 OPIC 搜索策略(这也是一个重要性)。最后需要指出的是,我们可以根据自己的需要设置爬取网页的时间间隔,这样可以保证一些基本的网站或者活动网站不会错过。
3.网络爬虫更新策略
互联网实时变化并且非常动态。网页更新策略主要决定何时更新之前下载的页面。常见的更新策略有以下三种:
1)历史参考政策
顾名思义,它根据页面过去的历史更新数据来预测页面未来的变化时间。一般来说,泊松过程用于建模和预测。
2)用户体验策略
虽然搜索引擎可以针对某个查询条件返回大量结果,但用户往往只关注结果的前几页。因此,爬虫系统可以先更新查询结果前几页的网页,再更新后面的网页。此更新策略还需要历史信息。用户体验策略保留网页多个版本的历史,根据过去每次内容变化对搜索质量的影响取一个平均值,并以此值作为决定何时重新抓取的依据。
3)集群抽样策略
上面提到的两种更新策略都有一个前提:需要网页的历史信息。存在两个问题:第一,如果系统为每个系统保存多个版本的历史信息,无疑会增加很多系统负担;其次,如果新网页完全没有历史信息,则无法确定更新策略。
根据这个策略,网页有很多属性,属性相似的网页的更新频率可以认为是相似的。计算某一类网页的更新频率,我们只需要对该类网页进行采样,并将它们的更新周期作为整个类别的更新周期。基本思路如下:
4.分布式捕获系统结构
一般来说,一个爬虫系统需要面对整个互联网上亿万个网页。单个爬虫不可能完成这样的任务。通常需要多个爬虫一起处理。一般来说,爬虫系统往往是分布式的三层结构。如图所示:
底层是分布在不同地理位置的数据中心。每个数据中心有多个爬虫服务器,每个爬虫服务器上可以部署多个爬虫程序。这样就构成了一个基本的分布式爬虫系统。
数据中心中的不同服务器可以通过多种方式协同工作:
1)主从
主从基本结构如图:
对于主从模式,有一个专门的主服务器来维护一个待抓取的URL队列,负责每次将URL分发给不同的从服务器,从服务器负责实际的网页下载。主服务器不仅维护一个 URL 队列来抓取和分发 URL,而且还调解从服务器上的负载。以防一些奴隶太闲或太累。
在这种模式下,Master往往成为系统的瓶颈。
2)点对点
方程的基本结构如图所示:
在这种模式下,所有爬取服务器之间的分工没有区别。每个爬取服务器可以从待爬取的URL队列中获取URL,然后对该URL的主域名H进行hash,然后计算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的hash值范围确定使用哪个服务器进行爬取。
如果某台服务器出现问题,本应负责这台服务器的网页会顺时针延迟,被下一台服务器抓取。这样,如果一台服务器及时出现故障,也不会影响其他工作。灯塔