搜索引擎的基础是有大量网页的信息数据库,这是决定搜索引擎整体质量的一个重要指标。如果搜索引擎的网页信息量小,那么供用户选择的搜索结果就少;而大量的网页信息能更好的满足用户的搜索需求。
要获得大量网页信息的数据库,搜索引擎就必须收集网络资源,这项工作是通过搜索引擎的网络漫游器( Crawler),在互联网中各个网页爬行并抓取信息。这是一种爬行并收集信息的程序,通常搜索引擎称为蜘蛛( Spider)或者机器人(Bot)。
每个搜索引擎的蜘蛛或者机器人,都有不同的lP,并有自己的代理名称。通常在网络日志中,可以看到不同IP及代理名称的搜索引擎蜘蛛。如下代码,前面的如220.181.108.89就是搜索引擎蜘蛛的IP,其中Baiduspider、Sogou+web+spider、Googlebot、Sosospider、bingbot,分别表示百度蜘蛛、搜狗蜘蛛、谷歌机器人、搜搜蜘蛛、Bing机器人。这些都是各个搜索引擎蜘蛛的代理名称,是区分搜索引擎的重要标志。
搜索引擎蜘蛛虽然名称不同,但是其爬行和抓取的规则大致相同:
(1)搜索引擎在抓取网页时,会同时运行很多蜘蛛程序,根据搜索引擎地址库中的网址,对网站进行浏览抓取。地址库中的网址包含用户提交的网址、大型导航站的网址、人工收录的网址、蜘蛛爬行到的新网址等。
(2)搜索引擎蜘蛛爬行到网站,首先会检查网站的根目录下是否有Robots.txt文件,如有Robots文件,则根据其中的约定,搜索引擎不抓取被禁止的网页。如果网站整体禁止某搜索引擎抓取,那么该搜索引擎就不再抓取网站内容,如果不小心把Robots文件设置错误,就可能会造成网站内容不能被收录。
(3)进入允许抓取的网站,搜索引擎蜘蛛一般会采取深度优先、宽度优先和最佳优先三种策略,进行爬行遍历,以有序地抓取到网站的更多内容。
深度优先的爬行策略,是搜索引擎蜘蛛在一个网页发现一个链接,顺着这个链接爬到下一个网页,在这个网页中又沿一个链接爬下去,直到没有未爬行的链接,然后回到第一个网页,沿另一个链接一直爬下去。
如图2.20所示为深度优先的爬行策略,搜索引擎蜘蛛进入网站首页,沿着链接爬行到网页Al,在Al中找到链接爬行到网页A2,再沿着A2中的链接爬行到A3,然后依次爬行A4、A5……直到没有满足爬行条件的网页时,搜索引擎蜘蛛再回到首页。回到首页的蜘蛛按照同样的方式,继续爬行网页Bl及更深层的网页,爬行完之后再回到首页爬行下一个链接,最后爬行完所有的页面。
宽度优先的爬行策略,是搜索引擎蜘蛛来到一个网页后,不会沿着一个链接一直爬行下去,而是每层的链接爬行完后,再爬行下一层网页的链接。如图2.21所示为宽度优先的爬行策略。
如上例中,搜索引擎蜘蛛来到网站首页,在首页中发现第一层网页A、B、C的链接并爬行完,再依次爬行网页A、B、C的下一层网页Al、A2、A3、Bl、B2、B3……,爬行完第二层网页后,再爬行第三层网页A4、A5、A6……,最后爬行完所有的网页层。
最佳优先爬行策略是按照一定的算法,划分网页的重要等级,主要通过PageRank、网站规模、反应速度等来判断网页重要等级,搜索引擎对等级较高的进行优先爬行和抓取。
PageRank等级达到一定程度时,才能被爬行和抓取。实际蜘蛛在爬行网页时,会将页面所有的链接收集到地址库中,并对其进行分析,筛选出PR较高的链接进行爬行抓取。通常规模大的网站能获得搜索引擎更多的信任,而且大网站更新频率快,蜘蛛会优先爬行。网站的反应速度也是影响蜘蛛爬行的重要因素,在最佳优先爬行策略中,网站的反应速度快,能提高蜘蛛的工作效率,因此蜘蛛也会优先爬行反应快的网站。
这三种爬行策略都有优点,也有一定的缺点。例如深度优先爬行一般会选择一个合适的深度,以避免陷入巨大数据量中,也就使得抓取的网页量受到了限制;宽度优先爬行随着抓取网页的增多,搜索引擎要排除大量的无关网页链接,爬行的效率将变低;最佳优先爬行会忽略很多小网站的网页,影响了互联网信息差异化的发展,流量几乎进入大网站,小网站难以发展。
在搜索引擎蜘蛛的实际爬行中,一般同时利用这三种爬行策略,经过一段时间的爬行,搜索引擎蜘蛛能爬行完互联网的所有网页。但是由于互联网资源庞大,搜索引擎的资源有限,通常只爬行抓取互联网中的一部分网页。
(4)蜘蛛爬行了网页后,会进行一个检测,以判断网页的价值是否达到抓取标准。搜索引擎爬行到网页后,会判断网页中的信息是否是垃圾信息,如大量重复文字的内容、乱码、与已收录内容高度重复等。这些垃圾信息蜘蛛不会抓取,仅仅是爬行而已。
(5)搜索引擎判断完网页的价值后,会对有价值的网页进行收录。这个收录过程就是将网页的抓取信息存入到信息数据库中,并按一定的特征对网页信息进行分类,以URL为单位存储。
搜索引擎的爬行和抓取,是提供搜索服务的基础条件,有了大量的网页数据,搜索引擎才能更好的满足用户的查询需求。