URL的问题是SEO过程中的一个基本问题,做一个新网站也好,优化现有的网站也好,都绕不开这一点。这两篇文章就来大体总结一下URL的规划应该怎么做。
在开始讲这些问题之前,需要先阅读完以下文档:
《优化网站的抓取与收录》 http://www.google.cn/ggblog/googlewebmaster-cn/2009/08/blog-post.html
《谷歌搜索引擎入门指南》第7页到11页。 点此下载
《创建方便 Google 处理的网址结构》 http://www.google.com/support/webmasters/bin/answer.py?hl=cn&answer=76329
这些都是google官方的文档,讲述了各种各样的规则。这些对百度也是同样适用的,因为它是针对爬虫的特性提出来的,并不是只有某个搜索引擎才适用。
看完上面的那些这些规则,发现翻来覆去讲得都是怎么让爬虫能非常顺畅的抓取完整个网站。其实绝大部分网站都存在这样或那样的问题的,也包括我这个博客,在抓取方面也存在一些问题。但是看在每篇博文都能被收录的情况下,也就不去优化了。但是对于很多收录还成问题的网站(特别是大中型网站)来说,就要好好规划一下了。大家可以用HTTrack抓取semyj这个博客看看,就能发现为什么我这么说了。(谁能一天之内抓取完这个博客的人请告诉我。)
还是先从搜索引擎的处境讲起吧。正如Google在文章中写道的那样:
网络世界极其庞大;每时每刻都在产生新的内容。Google 本身的资源是有限的,当面对几近无穷无尽的网络内容的时候,Googlebot 只能找到和抓取其中一定比例的内容。然后,在我们已经抓取到的内容中,我们也只能索引其中的一部分。 URLs 就像网站和搜索引擎抓取工具之间的桥梁: 为了能够抓取到您网站的内容,抓取工具需要能够找到并跨越这些桥梁(也就是找到并抓取您的URLs)。
这段话很好的总结了搜索引擎所面临的处境,那么爬虫在处理URL的时候会遇到哪些问题呢?
我们先来看重复URL的问题,这里说的重复URL是指同一个网站内的不同页面,都存在很多完全相同的URL。如:
http://www.semyj.com/archives/1097 和 http://www.semyj.com/archives/1114 这两个页面。
模板部分的URL是一样的
虽然页面不同,但是他们公用的部分,URL地址是一样的。看起来如果不同的爬虫抓取到这些页面的时候,会重复抓取,从而浪费很多不必要的时间。 这确实是一个问题,不过这个问题搜索引擎倒是基本解决好了。实际上,爬虫的抓取模式不是像我们理解的那样看到一个网页就开始抓取一个网页的。
爬虫顺着一个个的URL在互联网上抓取网页,它一边下载这个网页,一边在提取这个网页中的链接。假设从搜索引擎某一个节点出来的爬虫有爬虫A、爬虫B、爬虫C,当它们到达semyj这个网站的时候,每个爬虫都会抓取到很多URL,然后他们都会把那个页面上所有的链接都放在一个公用的“待抓取列表”里。(可以用lynx在线版模拟一下爬虫提取链接。)