网络营销之SEO无敌宝典
上QQ阅读APP看书,第一时间看更新

2.2 搜索引擎的抓取算法

搜索引擎工作的第一步,就是要完成数据收集的任务,也就需要从海量的数据中抓取符合搜索要求的相关数据。搜索引擎用来爬行和访问页面的程序被称为蜘蛛(Spider)。搜索引擎蜘蛛访问网站页面时类似于普通用户浏览网页,当程序发出页面访问请求后,服务器返回HTML代码,蜘蛛程序把收到的代码存入原始页面数据库。搜索引擎为了提高爬行和抓取速度,通常都使用多个蜘蛛并发分布爬行。

当蜘蛛访问某个网站时,它会先访问网站根目录下的Robots.txt(爬虫协议)文件。如果Robots.txt文件禁止搜索引擎抓取某些文件或目录,蜘蛛将遵守协议,不抓取被禁止的网址。

搜索引擎蜘蛛也有标明自己身份的代理名称,我们可以通过查看日志文件中的搜索引擎特定代理名称来辨识搜索引擎蜘蛛。

为了抓取网上尽量多的页面,搜索引擎蜘蛛会跟踪页面上的链接,从一个页面爬到下一个页面,就好像蜘蛛在蜘蛛网上爬行那样,这也就是搜索引擎蜘蛛这个名称的由来。整个互联网是由相互链接的网站及页面组成的。从理论上说,蜘蛛从任何一个页面出发,顺着链接都可以爬行到网上的所有页面。然而,由于网站及页面链接结构异常复杂,蜘蛛需要采取一定的爬行策略才能遍历网上所有页面。

最简单的爬行遍历策略分为两种,一种是深度优先遍历,另一种是广度优先遍历,如图2-2所示。

图2-2 深度优先遍历和广度优先遍历示意图

所谓深度优先,指的是蜘蛛沿着发现的链接一直向前爬行,直到前面再也没有其他链接,然后返回到第一个页面,沿着另一个链接再一直往前爬行。

广度优先是指蜘蛛在一个页面上发现多个链接时,不是顺着一个链接一直向前,而是把页面上所有第一层链接都爬一遍,然后再沿着第二层页面上发现的链接爬向第三层页面。

从理论上说,无论是深度优先还是广度优先,只要给蜘蛛足够的时间,都能爬完整个互联网。在实际工作中,蜘蛛的带宽资源、时间都不是无限的,也不可能爬完所有页面。实际上最大的搜索引擎也只是爬行和收录了互联网的一小部分。

深度优先和广度优先通常是混合使用的,这样既可以照顾到尽可能多的网站(广度优先),也能照顾到一部分网站的内页(深度优先)。