2022-12-17 分類: 網站建設
雖然頁面不同,但是他們公用的部分,URL地址是一樣的。看起來如果不同的爬蟲抓取到這些頁面的時候,會重復抓取,從而浪費很多不必要的時間。?這確實是一個問題,不過這個問題搜索引擎倒是基本解決好了。實際上,爬蟲的抓取模式不是像我們理解的那樣看到一個網頁就開始抓取一個網頁的。
爬蟲順著一個個的URL在互聯網上抓取網頁,它一邊下載這個網頁,一邊在提取這個網頁中的鏈接。假設從搜索引擎某一個節點出來的爬蟲有爬蟲A、爬蟲B、爬蟲C,當它們到達semyj這個網站的時候,每個爬蟲都會抓取到很多URL,然后他們都會把那個頁面上所有的鏈接都放在一個公用的“待抓取列表”里。
待抓取列表
這樣一來,在“待抓取列表”里,那些重復的URL就可以被去重了。這是一個節點在一種理想狀態下的情況,不過實際上因為搜索引擎以后還要更新這個網頁等等一些原因,一個網站每天還是有很多重復抓取。所以在以前的文章中,我告訴大家用一些方法減少重復抓取的幾率。
這里有一個問題,很多人肯定想問是不是一個網頁上所有的鏈接搜索引擎都會提取的,答案是肯定的。但是在《google網站質量指南》中,有這樣一句:“如果站點地圖上的鏈接超過 100 個,則需要將站點地圖拆分為多個網頁。”有些人把這句話理解為:“爬蟲只能抓取前100個鏈接”,這是不對的。
因為在“待抓取列表”里的URL,爬蟲并不會每一個鏈接都會抓取的。 鏈接放在這個列表里是沒問題的,但是爬蟲沒有那么多時間也沒必要每個鏈接都要去抓取,需要有一定的優先級。在“待訪問列表”里,爬蟲一邊按照優先級抓取一部分的URL,一邊把還未被抓取的URL記錄下來等待下次抓取,只是這些還未被抓取的URL,下次爬蟲來訪問的頻率就每個網站都不一樣了, 每一類URL被訪問的頻率也不一樣。
按優先級抓取
那么在“待抓取列表”里的URL,哪些是能被優先抓取,哪些是被次要抓取的呢?
我們稍微思考一下都能明白這個抓取的優先級策略應該怎么定。首先,那些目錄層級比較深的URL是次要抓取的;那些在模板部分的或重復率非常高的URL是被次要抓取的;那些動態參數多的URL是次要抓取的…..
這么做的原因,就是因為搜索引擎的資源是有限的,一個網站實際擁有的內容也是有限的,但是URL數量是無限的。爬蟲需要一些“蛛絲馬跡”來確定哪些值得優先抓取,哪些不值得。
在《谷歌搜索引擎入門指南》中,google建議要優化好網站的URL結構,如建議不要用“…/dir1/dir2/dir3/dir4/dir5/dir6/page.html”這樣的多層嵌套。就是因為在待抓取列表里,在其他條件相同的情況下,爬蟲會優先抓取目錄層級淺的URL。如用Lynx在線版查看本網站的頁面:
如果說,在這17個鏈接里,爬蟲只能選幾個鏈接抓取的話,紅色箭頭所指的鏈接在其他條件相同的情況下是要優先的。
但是這里又有一個誤區,有人在SEO過程中,把所有的網頁都建立在根目錄下,以為這樣能有排名的優勢。這樣也是沒有理解這個原因。而且爬蟲在這個網站上先抓取哪些URL后抓取哪些URL,都是自己的URL和自己的URL比,如果所有網頁都是在同一個目錄下,那就沒有區別了。
好的規劃URL目錄層級的方式,就是按照業務方的邏輯來規劃,從內容上應該是什么從屬關系就怎么規劃URL就是。就像《谷歌搜索引擎入門指南》中舉的那些例子一樣。
(順帶說一下。我經常看到,一個網站中,很多人非SEO的人員,如工程師和網頁設計人員或者網站編輯,都以為SEO和他們做的事情是相反的。這都是因為長期以來一些SEOer經常提交很多明顯違反用戶體驗的SEO需求給他們,造成他們以為SEO就是和他們做的事情是有沖突的。實際上,SEO和別的部門有非常少的沖突,只要你能用科學的方法去實踐,就能發現以前有太多誤導人的觀點了。還有,對于其他部門的專業人員,他們專業領域的意見非常值得去考慮。)
爬蟲有一個特點,就是它不能實時的比較它正在抓取的內容是不是重復的內容。因為如果要做到實時的比較,那它至少要把正在抓取的頁面和那些已經在索引庫的頁面做對比,這是不可能短時間內可以完成的。 前面把所有URL統一放到一個待抓取列表中的方法只能避免那種URL完全一模一樣的重復抓取,但是無法應對URL不一樣、但是內容一樣的抓取。
正如所有搜索引擎都強調的那樣,動態參數是一個經常產生URL不一樣、但是內容一樣的現象的原因。所以搜索引擎建議大家用靜態化的方法去掉那些參數。靜態化的本質是URL唯一化,在《優化網站的抓取與收錄》這篇文章中,曾經用的“一人一票”這個描述就很貼切的表達了這個意思。靜態化只是一個手段而不是目的,為了保證URL的唯一化,可以把URL靜態化、也可以用robots.txt或nofollow屏蔽動態內容、可以用rel=canonical屬性、還可以在webmaster tool里屏蔽一些參數等等。
而靜態化也會有好的靜態化和不好的靜態化之別。我們這里不說那種把多個參數直接靜態化了的案例,而是單純來看看如下兩個URL:
http://www.semyj.com/archives/1097和 http://www.semyj.com?p=1097??
這兩個URL中,這個靜態化的是不是就比動態的好呢? 實際上這兩個URL的差別很小。首先這兩種URL搜索引擎都能收錄,如果說動態URL“?p=1097”可能產生大量重復的內容讓爬蟲抓取,那這個靜態的URL“archives/1097”也不能保證不會產生大量重復的內容。特別是爬蟲在抓取時碰到大量有ID的靜態的URL時,爬蟲無法判斷這個網站是不是把session ID等參數靜態化了才造成的,還是這個網站本來就有這么多內容。 所以更好的靜態化是這樣的:?
http://www.semyj.com/archives/seo-jingli?
這種URL就能保證唯一化而不會和其他情況混淆了,所以URL中要盡量用有意義的字符。這不是因為要在URL增加關鍵詞密度而這么做的,是為了方便搜索引擎抓取。?
以上是因為爬蟲固有的特點造成的抓取障礙,而有時網站的結構也能造成爬蟲的抓取障礙。這種結構在《優化網站的抓取與收錄》一文中用的名字是“無限空間”。文中舉了一個日歷的例子:如很多博客上都會有一個日歷,順著這個日歷的日期一直往下點,永遠都有鏈接供你點擊的,因為時間是無限的。
其實還有更多的“無限空間”的例子,只是“無限空間”這個名詞沒怎么翻譯好,翻譯做“無限循環”就容易理解多了。 舉一個例子:
京東商城筆記本分類頁面: http://www.360buy.com/products/670-671-672-0-0-0-0-0-0-0-1-1-1.html
當點擊“惠普”+“11英寸”這2個條件后能出來一個頁面,點擊“聯想”+“14英寸”+“獨立顯卡”也能出來一個頁面。那總共能出來的頁面有多少呢?
這個頁面中,品牌有18個分類、價格9個分類、尺寸7個分類、平臺3個分類、顯卡2個分類。 那么可以組合成的URL個數為:
按1個條件篩選: 18+9+7+3+2 = 39 。
按2個條件篩選:18×9+18×7+18×3+18×2+9×7+9×3+9×2+7×3+7×2+3×2=527 。
按3個條件篩選:18×9×7+18×9×3+18×9×2+18×7×3+18×7×2+18×3×2+9×7×3+9×7×2+9×3×2+7×3×2=3093。
按4個條件篩選:18×9×7×3+18×9×7×2+18×7×3×2+18×9×3×2+9×7×3×2=7776。
按5個條件篩選:18×9×7×3×2=6804。
總共可以組合出的URL數量為:39+527+3093+7776+6804=18239 個。
筆記本分類里總共才 624個商品,要放在18239個頁面中,而有的頁面,一個頁面就能放32個產品。勢必造成大量的頁面是沒有商品的。如點擊這幾個篩選條件后,就沒有匹配的商品出來了:
無結果
這樣的結果,就是造成大量重復的內容以及消耗爬蟲很多不必要的時間,這也可以認為是“無限空間”。 這類情況非常常見。
國平seo上面舉的京東商城的例子還是不怎么嚴重的,有的網站能組合出幾億甚至無窮無盡個URL出來。我在國內和國外看過那么多同類的網站,居然發現迄今為止只有兩家網站注意到了這個問題。究其原因,還是因為很多SEO人員不太重視數據,這種問題稍微分析爬蟲的日志就可以看出來的。直到現在,還有一些SEOer認為把這些以前是動態的頁面靜態化是個有積極意義的事情,沒看到不好的一面就是這樣的動作制造出了大量重復的頁面,向來就是一個在SEO方面不好的改動。
本文名稱:SEM一家之言:如何規劃好網站的URL
文章地址:http://m.newbst.com/news/223617.html
成都網站建設公司_創新互聯,為您提供云服務器、網站改版、營銷型網站建設、定制網站、網站導航、App開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯
猜你還喜歡下面的內容