URL的問題是SEO過程中的一個基本問題,做一個新網(wǎng)站也好,優(yōu)化現(xiàn)有的網(wǎng)站也好,都繞不開這一點。這兩篇文章就來大體總結(jié)一下URL的規(guī)劃應(yīng)該怎么做。
在開始講這些問題之前,需要先閱讀完以下文檔:
《優(yōu)化網(wǎng)站的抓取與收錄》 http://www.google.cn/ggblog/googlewebmaster-cn/2009/08/blog-post.html
《谷歌搜索引擎入門指南》第7頁到11頁。 點此下載
《創(chuàng)建方便 Google 處理的網(wǎng)址結(jié)構(gòu)》 http://www.google.com/support/webmasters/bin/answer.py?hl=cn&answer=76329
這些都是google官方的文檔,講述了各種各樣的規(guī)則。這些對百度也是同樣適用的,因為它是針對爬蟲的特性提出來的,并不是只有某個搜索引擎才適用。
看完上面的那些這些規(guī)則,發(fā)現(xiàn)翻來覆去講得都是怎么讓爬蟲能非常順暢的抓取完整個網(wǎng)站。其實絕大部分網(wǎng)站都存在這樣或那樣的問題的,也包括我這個博客,在抓取方面也存在一些問題。但是看在每篇博文都能被收錄的情況下,也就不去優(yōu)化了。但是對于很多收錄還成問題的網(wǎng)站(特別是大中型網(wǎng)站)來說,就要好好規(guī)劃一下了。大家可以用HTTrack抓取semyj這個博客看看,就能發(fā)現(xiàn)為什么我這么說了。(誰能一天之內(nèi)抓取完這個博客的人請告訴我。)
還是先從搜索引擎的處境講起吧。正如Google在文章中寫道的那樣:
網(wǎng)絡(luò)世界極其龐大;每時每刻都在產(chǎn)生新的內(nèi)容。Google 本身的資源是有限的,當面對幾近無窮無盡的網(wǎng)絡(luò)內(nèi)容的時候,Googlebot 只能找到和抓取其中一定比例的內(nèi)容。然后,在我們已經(jīng)抓取到的內(nèi)容中,我們也只能索引其中的一部分。 URLs 就像網(wǎng)站和搜索引擎抓取工具之間的橋梁: 為了能夠抓取到您網(wǎng)站的內(nèi)容,抓取工具需要能夠找到并跨越這些橋梁(也就是找到并抓取您的URLs)。
這段話很好的總結(jié)了搜索引擎所面臨的處境,那么爬蟲在處理URL的時候會遇到哪些問題呢?
我們先來看重復(fù)URL的問題,這里說的重復(fù)URL是指同一個網(wǎng)站內(nèi)的不同頁面,都存在很多完全相同的URL。如:
http://www.semyj.com/archives/1097 和 http://www.semyj.com/archives/1114 這兩個頁面。
模板部分的URL是一樣的
雖然頁面不同,但是他們公用的部分,URL地址是一樣的。看起來如果不同的爬蟲抓取到這些頁面的時候,會重復(fù)抓取,從而浪費很多不必要的時間。 這確實是一個問題,不過這個問題搜索引擎倒是基本解決好了。實際上,爬蟲的抓取模式不是像我們理解的那樣看到一個網(wǎng)頁就開始抓取一個網(wǎng)頁的。
爬蟲順著一個個的URL在互聯(lián)網(wǎng)上抓取網(wǎng)頁,它一邊下載這個網(wǎng)頁,一邊在提取這個網(wǎng)頁中的鏈接。假設(shè)從搜索引擎某一個節(jié)點出來的爬蟲有爬蟲A、爬蟲B、爬蟲C,當它們到達semyj這個網(wǎng)站的時候,每個爬蟲都會抓取到很多URL,然后他們都會把那個頁面上所有的鏈接都放在一個公用的“待抓取列表”里。(可以用lynx在線版模擬一下爬蟲提取鏈接。)