通常搜索引擎处理的对象是互联网网页。首先面临的问题是:如何能够设计出高效的下载系统,以将如此海量的网页数据传送到本地,在本地形成互联网网页的镜像备份。网络爬虫即起此作用,它是搜索引擎系统中很关键也很基础的构件。
爬虫,实际上就是通过相应的技术,抓取页面上特定的信息。
1,爬虫框架
首先从互联网页面中精心选择一部分网页,以这些网页的链接地址作为种子URL,将这些种子URL放入待抓取URL队列中,爬虫从待抓取URL队列依次读取,并将URL通过DNS解析,把链接地址转换为网站服务器对应的IP地址,然后将其和网页相对路径名称交给网页下载器,网页下载器负责页面内容的下载。对于下载到本地的网页,一方面将其存储到页面库中,等待建立索引等后续处理;另一方面将下载的URL放入已抓取URL队列中,这个队列记载了爬虫系统已经下载过的URL以避免重复抓取。对于刚下载的网页,从中抽取所包含的所有链接信息,并在已抓取URL队列中检查,如果发现链接还没有被抓取过,则将这个URL放入待抓取URL队列末尾,在之后的抓取调度中会下载这个URL对应的网页。如此这般形成循环,直到待抓取URL队列为空。
互联网页面可划分为5个集合:
已下载的网页集合:爬虫已经从互联网下载到本地进行索引的网页集合
已过期的网页集合
待下载的网页集合
可知的网页集合:这些网页还没有被爬虫下载也没有出现在待抓取URL队列中,不过通过已经抓取的网页或者在待抓取URL队列中的网页,总是可以通过链接关系发现它们
不可知的网页集合:这些网页对爬虫来说是无法抓取到的。这部分网页所占的比例很高。
2,优秀爬虫的特性
高性能:主要指爬虫下载网页的抓取速度,高效的数据结构对于爬虫的性能影响很大
可扩展性
健壮性:爬虫能够正确处理各种异常情况
友好性:一是保护网站的部分私密性,二是减少被抓取网站的网络负载
3,网络爬虫研发的目标
在资源有限的情况下,既然搜索引擎只能抓取互联网现存网页的一部分,那么就尽可能选择比较重要的那部分网页来索引;对于已经抓取到的网页,尽可能快地更新其内容,使得索引网页和互联网对应页面内容同步更新;在此基础上尽可能扩大抓取范围,抓取到更多以前无法发现的网页。
4,抓取策略
抓取策略的基本目标:优先选择重要的网页进行抓取。
宽度优先遍历策略:将新下载网页包含的链接直接追加到待抓取URL队列末尾
非完全PageRank策略:对于已经下载的网页,加上待抓取URL队列中的URL一起,形成网页集合,在此集合内进行PageRank计算,计算完成后,将待抓取URL队列里的网页按照PageRank得分由高到低排序,形成的序列就是爬虫接下来应该依次抓取的URL列表。
OPIC策略:“在线页面重要性计算”。在算法开始前,每个互联网页面都给予相同的“现金”,每当下载了某个页面P后,P将自己拥有的“现金”平均分配给页面中包含的链接页面,把自己的“现金”清空。而对于待抓取URL队列中的网页,则根据其手头拥有的现金金额多少排序,优先下载现金最充裕的网页。OPIC与PageRank的区别:PageRank每次需要迭代计算,而OPIC策略不需要迭代过程。
大站优先策略:以网站为单位来衡量网页的重要性。对于待抓取URL队列中的网页,根据所属网站归类,如果哪个网站等待下载的页面最多,则优先下载这些链接。
5,网页更新策略
任务:决定何时重新抓取之前已经下载过的网页,以尽可能使得本地下载网页和互联网原始页面保持一致。
历史参考策略:过去频繁更新的网页,未来也会频繁更新。
用户体验策略:保存网页的多个历史版本,并根据过去每次内容变化对搜索质量的影响,得出一个平均值,以此作为判断爬虫重抓该网页时机的参考依据,对于影响越厉害的网页,则越优先调度重新抓取。
聚类抽样策略:首先根据网页所表现出的特征,将其聚类成不同的类别,每个类别内的网页具有相似的更新周期。从类别中抽取一部分最有代表性的网页,对这些网页计算其更新周期,那么这个更新周期适用于类别内所有的网页,之后即可根据网页所属类别来决定其更新频率。
6,暗网抓取
暗网,指目前搜索引擎爬虫按照常规方式很难抓取到的互联网页面。如携程旅行网的机票数据,很难有显式链接指向数据库内的记录,往往是服务网站提供组合查询界面,只有用户按照需求输入查询之后,才可能获得相关数据。
暗网爬虫的目的是将暗网数据从数据库中挖掘出来,并将其加入到搜索引擎的索引,这样用户在搜索时便可利用这些数据,增加信息覆盖程度。
查询组合问题:Google对此提出了富含信息查询模版技术。对于某个固定的查询模版来说,如果给模版内每个属性都赋值,形成不同的查询组合,提交给垂直搜索引擎,观察所有返回页面的内容,如果相互之间内容差异较大,则这个查询模版就是富含信息查询模版。Google使用了ISIT算法:首先从一维模版开始,对一维查询模版逐个考察,看其是否富含信息查询模版,如果是则将这个一维模版扩展到二维,再次依次考察对应的二维模版,如此类推,逐步增加维数,直到再也找不到富含信息查询模版为止。
文本框填写问题:通过人工观察网站进行定位,提供一个与网站内容相关的初始种子查询关键词表,并向垂直搜索引擎提交查询,并下载返回的结果页面。之后从返回结果页面里自动挖掘出相关的关键词,并形成一个新的查询列表,依次将新挖掘出的查询提交给搜索引擎。如此往复,直到无法下载到新的内容为止。
7,分布式爬虫
分布式爬虫的3个层级:分布式数据中心,分布式抓取服务器及分布式爬虫程序。每个数据中心由多台高速网络连接的抓取服务器构成,而每台服务器又可以部署多个爬虫程序。
主从式分布爬虫:不同服务器承担不同的角色分工,其中一台专门负责对其他服务器提供URL分发服务,其他机器进行实际的网页下载。URL服务器容易成为整个系统的瓶颈。
对等式分布爬虫:服务器之间不存在分工差异,每台服务器承担相同的功能,各自负担一部分URL的抓取工作。判断某个URL是否应该由自己来抓取或者将该URL传递给相应的服务器,可对网址的主域名使用哈希取模或一致性哈希方法。