Google抓取网页的原理

 

Google的Matt Cutts确认了AdSense的Mediabot的确是会帮助Googlebot抓取网页的消息,但有部分人不相信Matt Cutts,或者不相信他能代表Google官方。作为Matt Cutts的blog的一名忠实读者,我觉得完全没必要花费篇幅再去特别说明Matt Cutts的权威性。我想说的是,Matt Cutts在是Google品质管理部门的一名高级软件工程师,外界所知的是他负责研发阻止Spam与恶性控制排名的技术。因此,信不信当然由你。


其实上次Matt所透露的仅仅是其中一方面的内容。今天,Matt再次写了一篇非常详细的文章,解释了各种bot是怎样抓取网页的,以及最新的BigDaddy在抓取网页方面有什么新的变化等等,内容非常的精彩,所以和大家分享一下。


首先要介绍的是“crawl caching proxy”(爬行缓存代理)。Matt举了一个ISP与用户的例子来说明它。用户上网时,总是先通过ISP获取网页内容,然后ISP就会把用户访问过的网页缓存起来备用。比如说,当用户A访问了www.w3000.cn,那么中国电信(或网通等)就会把“广州Google”发送给用户A,然后将“广州Google”缓存起来,当用户B在下一秒钟里再访问www.w3000.cn,那么中国电信就会把缓存里的“广州Google”发送给用户B,这样就能节省了带宽。


正如本站之前所报道的那样,最新的软件层面的升级(转移至BigDaddy)已经接近完成,因此升级后的各方面的能力都将得到加强。这些加强包括了更智能化的googlebot爬行、改良的规范性以及更好的收录网页能力。而在爬行抓取网页方面,也采取了节省带宽的方法。Googlebot也随着BigDaddy的升级而得到了升级。新的Googlebot已经正式支持了gzip编码,所以如果你的网站开启了gzip编码功能,那么就能节省Googlebot爬行你的网页时所占的带宽。


除了改良外,升级后将会采用上面所说到的crawl caching proxy来抓取网页,以进一步节省带宽。下面是一个示意图,显示了传统的Googlebot是怎样爬行一个网站的:



从上图可见,以爬行为主,Server A指的是AdSense,而Server N则可以是blogsearch或其它。我们可以看出,同一个网站,Googlebot与AdSense的Mediabot、blogsearch的bot都爬行过了,其中有很多重复的爬行。上图抓取网页的总数一共是23次。我们来看一下升级后所采用的crawl caching proxy又是怎样的情形:


很明显,因为crawl caching proxy将各种bot的抓取都缓存起来,因此当已经抓取过某些网页,而Mediabot或其它bot再次抓取重复的网页时,crawl caching proxy就会发挥作用,直接将缓存里的网页返回给Mediabot等,这样就使得实际爬行次数减少,节省了带宽。


从Matt的分析可以看出,这样做的确是能节省自己及网站的带宽,好处是能让各种bot在一定的时间里爬行更多的网页,以方便收录。我的理解是,虽然好处是相当明显,但坏处也是有的。比如,当一个网站它以AdSense的广告费为生,那么它就需要AdSense的Mediabot不停地光临,以分析它的更新网页的内容,投放更相关的广告。但当这个网站是一个PR值不错的网站,那么Googlebot很可能会天天都来爬行它,这样一来,crawl caching proxy就会把爬行缓存起来,等Mediabot再来爬行的时候,它就直接把缓存的内容返回给Mediabot。这样一来就减少了Mediabot爬行该网站的次数。由于两种bot并不是采用完全相同的工作机制,因此这个网站有可能因此Mediabot的爬行次数的减少而使得显示的AdSense广告的相关性减弱。因此,这种改进有可能带来一定的不公.