首页 > 编程知识 正文

爬虫和搜索引擎的区别,python3实现搜索引擎

时间:2023-05-04 00:44:10 阅读:11268 作者:3264

阅读目录

1 .网络爬虫技术的基本工作流程和基础设施

2 .网络爬虫捕获策略

3 .网络爬虫更新策略

4 .分布式握持系统结构

5 .参考内容

随着互联网的发展,互联网被称为信息的主要载体,如何在网上收集信息是互联网领域面临的一大挑战。 爬行动物技术是什么? 其实网络爬虫技术就是抓住网上的数据。 在网上抓取数据是一种关联的抓取,就像蜘蛛一样在网上爬来爬去,我们把它想象成网络爬虫技术。 其中网络爬虫也被称为网络机器人和网络追踪者。

爬虫技术是搜索引擎架构中最根本的数据技术,通过网络爬虫技术,可以在本地存储互联网上数百亿个网页信息,形成镜像文件,为整个搜索引擎提供数据支持。

1 .网络爬虫技术的基本工作流程和基础架构网络爬虫获取网页信息的方式与我们平时使用浏览器访问网页的方式完全相同,都是基于HTTP协议获取的,流程主要包括

1 )连接到DNS域名服务器,域名解析要捕获的URL (URL-------IP );

2 )根据HTTP协议,发送HTTP请求获取web内容。

完整的网络爬虫基础框架如下图所示。

整个体系结构包括以下过程:

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)其他搜索策略

一些常用的爬虫搜索边率还包括Partial PageRank搜索策略(基于PageRank分数确定下一个要捕获的URL )、OPIC搜索策略)。 最后必须指出的是,我们可以根据自己的需要设定网页捕获间隔时间。 这样可以避免泄露我们基本的大站和活跃网站的内容。

3 .网络爬虫更新策略互联网实时变化,具有较强的动态性。 网页更新策略主要是确定何时更新以前下载的页面。 常见的更新策略有以下三种:

1)历史参考策略

的月饼,根据页面过去的历史记录更新数据,预测该页面将来什么时候变化。 一般在泊松过程中建模预测。

g>2)用户体验策略
  尽管搜索引擎针对于某个查询条件能够返回数量巨大的结果,但是用户往往只关注前几页结果。因此,抓取系统可以优先更新那些现实在查询结果前几页中的网页,而后再更新那些后面的网页。这种更新策略也是需要用到历史信息的。用户体验策略保留网页的多个历史版本,并且根据过去每次内容变化对搜索质量的影响,得出一个平均值,用这个值作为决定何时重新抓取的依据。
  3)聚类抽样策略

  前面提到的两种更新策略都有一个前提:需要网页的历史信息。这样就存在两个问题:第一,系统要是为每个系统保存多个版本的历史信息,无疑增加了很多的系统负担;第二,要是新的网页完全没有历史信息,就无法确定更新策略。

  这种策略认为,网页具有很多属性,类似属性的网页,可以认为其更新频率也是类似的。要计算某一个类别网页的更新频率,只需要对这一类网页抽样,以他们的更新周期作为整个类别的更新周期。基本思路如图:

4. 分布式抓取系统结构

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

  最下一层是分布在不同地理位置的数据中心,在每个数据中心里有若干台抓取服务器,而每台抓取服务器上可能部署了若干套爬虫程序。这就构成了一个基本的分布式抓取系统。

  对于一个数据中心内的不同抓去服务器,协同工作的方式有几种:

  1)主从式(Master-Slave)

  主从式基本结构如图所示:

  对于主从式而言,有一台专门的Master服务器来维护待抓取URL队列,它负责每次将URL分发到不同的Slave服务器,而Slave服务器则负责实际的网页下载工作。Master服务器除了维护待抓取URL队列以及分发URL之外,还要负责调解各个Slave服务器的负载情况。以免某些Slave服务器过于清闲或者劳累。

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

  2)对等式(Peer to Peer)

  对等式的基本结构如图所示:

  在这种模式下,所有的抓取服务器在分工上没有不同。每一台抓取服务器都可以从待抓取在URL队列中获取URL,然后对该URL的主域名的hash值H,然后计算H mod m(其中m是服务器的数量,以上图为例,m为3),计算得到的数就是处理该URL的主机编号。

  举例:假设对于URL www.baidu.com,计算器hash值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] 《这就是搜索引擎:核心技术详解》。

作者:Poll的笔记 

来源:http://www.cnblogs.com/maybe2030/p/4778134.html

—THE END—

文章推荐

☞数学  |   小学生如何诠释数学的线条美?

☞数学 |  从追女孩到找导弹,这就是数学的魅力!!

☞字节员工炸锅,薪资普降17%!

☞京东 | AI人才联合培养计划

☞世界天才大汇总

☞90后「V神」封神之路:4岁学编程,19岁创办以太坊,4年十亿身家!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。