0岁的产品经理程序员

搜索引擎之爬虫

2018-11-28  本文已影响17人  产品美景

本文约 2300 字,建议阅读时间为 5 分钟,理解为主。此处,强烈建议查看上一篇《搜索引擎之技术架构》。

上一篇《搜索引擎之技术架构》,我们讲述了搜索引擎的概念、种类,和技术架构,我们用一张图回顾一下。

搜索引擎技术架构

本章,我们重点来学习一下图上左上角的爬虫,主要包括五个方面的内容:

爬虫的概念

爬虫的分类

爬虫的抓取策略

爬虫的更新策略

爬虫的部署特点

1 爬虫的概念

爬虫,又称蜘蛛、Spider、机器人、Bot等(以下统一称为“爬虫”),是搜索引擎用来抓取互联网网页的软件程序,处于整个搜索引擎业务和技术的最上游模块。

只有爬虫抓取的网页才会在参与之后的内容和链接的处理,但不会爬虫抓取的网页也有可能出现在搜索引擎结果之中,比如,淘宝网禁止百度的爬虫抓取其内容,但域名层级也会参与最终的网页排序,最终展示给用户。

2 爬虫的种类

按照抓取对象的侧重点,可以将爬虫分为以下几类:

1)批量型爬虫,BatchCrawler

批量型爬虫有较明确的抓取范围及抓取目标,目标可能是一段时间,也可能是一批网页,一旦完成要求的抓取要求,则爬虫就会停止抓取进程,算是完成了此阶段批量的抓取任务。

2)增量型爬虫,IncrementalCrawler

不同于批量型爬虫,增量型爬虫会持续不断地抓取网页,并且要对新抓到的网页进行更新。又称“通用爬虫”,在搜索业务内,如百度、Google采用的都是增量型爬虫。

3)垂直型爬虫,FocusCrawler

垂直型爬虫关注在某一个固定的专题内容或者固定的行业网页。在互联网行业,存在千万种行业分类,垂直型爬虫要明确爬虫哪方面的内容,进而对此行业内进行抓取。一般垂直型搜索引擎,如携程,就会重点抓取出行方面的数据,不会考虑到食品类别的网页。

以上三种爬虫,技术难度最大最复杂的当属增量型爬虫,也是Google、百度等一般搜索引擎采用的爬虫类型。

与批量型相比,增量型爬虫需要对能发现的任务网页进行抓取,而不是关注在某一范围或目标上。与垂直型相比,增量型爬虫需要对全网内容进行抓取,而不仅只抓取某一专题内容。

此外,增量型爬虫还要考虑到所有抓取下来内容的更新,一遍遍地抓取,更新内容,具体策略见下文。

3 爬虫的抓取策略

互联网上,所有的网页可以分为四种:

网页分类

已下载网页,即已被爬虫抓取下来的网页;

待下载网页,即爬虫将要抓取的网页;

可知网页,即爬虫知道存在但暂时不会去抓取的网页;

不可知网页,即暗网内容,爬虫都不知道存在的网页;

爬虫则是对这四类页面进行抓取的,具体会根据不同的策略进行不同的抓取方式。

1)深度优先策略,DepthFirst

深度优先策略,指的是爬虫根据一个页面顺着抓取下去,即一条路走到黑。

深度优先

如爬虫从第1个页面出发抓取,沿着2-3-4-5,抓取结束之后,再去抓取页面6-7,再去抓取8-9-10。

2)广度优先策略,BreadthFirst

广度优先策略,指的是爬虫在同一个等级上进行抓取,直到同等级页面都被抓取完毕之后,再去抓取下一层级的页面。

广度优先

如上图,广度优先策略的抓取顺序为横向的2-3-4,然后是下一层级的5-6-7-8。

3)大站优先策,LargerSite First

大站优先策略就很简单粗暴了,以站点为单位,表示这不同的重要性,对爬虫来说,会优先且更高频率地去抓取大站。

以上,三种基本的爬虫抓取策略,各有优缺点。综合而言,广度优先的策略不太理想,因为如果只在一个层级抓取,永远达到不了一些网页,而深度优先的策略,总能根据网页之间的链接关系达到其他的网页。

在实际应用中,一般都是多种策略混合使用,比如从待抓取列表中,优先抓取大站数据,在一定广度范围内深度抓取等。

4 爬虫的更新策略

在爬虫完成第一遍抓取之后,还要考虑到再次抓取的情况,因为网页的内容都是变化的,如不能及时抓取,那么用户看到的可能还是很久之前的信息,就没有意义了。

爬虫一般会根据以下三个方面进行更新:

历史更新频率

用户体验

网页类型

1)历史更新频率

搜索引擎爬虫在爬虫某些网页时,会判断网页的主体内容是否发生了变化,如果发现网页内容经常更新,就会增加抓取网页的几率。比如一些时事类的新闻版块,分分钟会更新出许多的内容,那么爬虫也在以秒为单位进行实时的抓取。但如果爬虫尝试抓取的时候,发现网页内容都是一成不变,则减少抓取频率,甚至不再对其抓取。在一个动态调整中,爬虫会发现最合理的抓取规律。

2)用户体验

互联网上有海量的页面和数据,但搜索引擎最关心的是用户需要的那一小部分。在用户输入查询词之后经常点击的网页,爬虫则会认为其实用户体验良好的页面,增加对其的抓取。

3)网页类型

不同的网页更新频率是不同的,一般网页分为首页、分类页、内容页。爬虫抓取首页、分类页的几率比内容页要高,因为爬虫会认为内容页的内容更新频率小,而首页和分类页因为层级浅,且更新频率高,则会受到爬虫青睐。

5 爬虫的部署特点

搜索引擎为了满足用户的需求,需要大量的爬虫对互联网上的网页进行抓取。对Google或者百度来说,在全球范围内配置了很多数据中心,比如Google在香港的数据中心,数据中心中配备了许多服务器,服务器上运行着许多爬虫程序。可以理解为,有许多机房,机房有许多台电脑,电脑上运行着许多程序,对互联网上的网页进行着抓取。

图为美国爱荷华州康瑟尔布拉夫斯的谷歌数据中心,类似于咱们超算中心,超酷的!

数据中心

综上所述,搜索引擎之爬虫为大家讲解了爬虫的概念、种类、抓取策略、更新策略、部署特点,让大家对爬虫有个宏观方面的认识。

当然,若大家有自己网站的话,还可以采取不同的策略来对爬虫进行限制,比如设置Robots.txt 文件禁止Bing搜索引擎的爬虫抓取,比如设置meta robot 信息进行单个页面的限制等。此方面的内容不赘述,欢迎大家和我沟通针对于爬虫可进行的网站优化。

此外,我会陆续给大家更新搜索引擎系列文章,展开讲述不同阶段不同步骤,搜索引擎做了什么,为什么做,怎么做的。

公众号:产品美景,只讲产品和思考干货的地方,欢迎随时交流想法 ~

上一篇下一篇

猜你喜欢

热点阅读