搜索引擎爬虫原理分析

众所周知,一个网站的流量能大致分成三个部分:直接访问(direct)、引用页(referer)和搜索(search engine)。其实搜索那一部分也能属于引用页的范畴,但是它太重要了,让我们不能不单独拿出来作为一个独立的分析模块。总体来说,根据网站的性质和发展,这三部分的比例会有所不同。比如说,对于门户网站来说,直接访问的百分比应该一般网站高,不然“门户”一词就失去了意义。同样,对于一些提供服务性质的网站,搜索部分就应该高一点,因为当用户需要寻找某项服务的时候,第一站往往是百度或谷歌。对于这三部分的流量,会有不同的策略和方法去提高自己网站的访问量。在本文中,笔者侧重于搜索引擎。 下面就让我们来介绍一下今天的主角——爬虫(crawler)。爬虫是搜索引擎获取网络资源的重要途径。通过网络爬虫,搜索引擎可以有机的获取当前互联网上最新的网页,为接下来分析关键词,排序等等提供素材。既然爬虫如此的重要,那么我们就应该针对爬虫给他提供一些适合他的“食物”(笔者在此不想提过多的技术分析,比如说广度优先,深度优先,内容相关,网页重要性等等,那些是留给各个研发人员去关心的事情,在这里笔者只想描述些概念性的观点,适合大家理解讨论)。但是在这里有个非常重要的概念就是爬虫是很有礼貌的,它不会不告而访。它会在自己的“user agent”声称“我是某某搜索引擎的爬虫”。这就为我们提用一个很好的机会,因为机器毕竟和人不一样,要达到人类最好的视觉效果可能会对搜索引擎对页面的分析不利,反之亦然。通过探测爬虫的方法,可以把一个完全只适合给机器看的页面交给爬虫但是一点也不影响到自己真正用户的用户体验。而且,随着时间的发展,爬虫开始变的越来越聪明,有些爬虫比如说google,已经可以理解页面本身中的javascript(但不是包括