搜索引擎之爬虫
本文约 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 信息进行单个页面的限制等。此方面的内容不赘述,欢迎大家和我沟通针对于爬虫可进行的网站优化。
此外,我会陆续给大家更新搜索引擎系列文章,展开讲述不同阶段不同步骤,搜索引擎做了什么,为什么做,怎么做的。
公众号:产品美景,只讲产品和思考干货的地方,欢迎随时交流想法 ~