搜索引擎蜘蛛的基本原理及工作流程
搜索引擎用來爬行和訪問頁面的程序被稱為蜘蛛(spider),也叫機器人(bot)。搜索引擎蜘蛛訪問網站頁面時類似于普通用戶使用瀏覽器,蜘蛛程序發出頁面訪問請求后,服務器返回HTML代碼,蜘蛛程序把收到的代碼存入原始頁面數據庫,搜索引擎為了提高爬行和抓取的速度,都使用多個蜘蛛分布爬行。
蜘蛛訪問網站時,首先會訪問網站根目錄下的robots.txt文件,如果robots.txt文件禁止搜索引擎抓取某些網頁或者內容,再或者網站,蜘蛛將遵循協議,不對其進行抓取(具體可查看馬海祥博客《robots協議文件的寫法及語法屬性解釋》的相關介紹)。
蜘蛛也是有自己的代理名稱的,在站長日志中可以看出蜘蛛爬行的痕跡,這也就是為什么這么多站長解答問題的時候,都會說先查看網站日志(作為一個出色的SEO你必須具備不借助任何軟件查看網站日志的能力,并且要非常熟悉其代碼的意思)。
一、搜索引擎蜘蛛的基本原理
搜索引擎蜘蛛即Spider,是一個很形象的名字,把互聯網比喻成一個蜘蛛網,那么Spider就是在網上爬來爬去的蜘蛛。
網絡蜘蛛是通過網頁的鏈接地址來尋找網頁,從網站某一個頁面(通常是首頁)開始,讀取網頁的內容,找到在網頁中的其它鏈接地址,然后通過這些鏈接地址尋找下一個網頁,這樣一直循環下去,直到把這個網站所有的網頁都抓取完為止。
如果把整個互聯網當成一個網站,那么網絡蜘蛛就可以用這個原理把互聯網上所有的網頁都抓取下來。
對于搜索引擎來說,要抓取互聯網上所有的網頁幾乎是不可能的,從目前公布的數據來看,容量最大的搜索引擎也不過是抓取了整個網頁數量的百分之四十左右。
這其中的原因一方面是抓取技術的瓶頸,100億網頁的容量是100×2000G字節,即使能夠存儲,下載也存在問題(按照一臺機器每秒下載20K計算,需要340臺機器不停的下載一年時間,才能把所有網頁下載完畢),同時,由于數據量太大,在提供搜索時也會有效率方面的影響。
因此,許多搜索引擎的網絡蜘蛛只是抓取那些重要的網頁(每個搜索引擎的蜘蛛抓取的原則也都不同,具體可對照一下馬海祥博客的《解讀IIS日志中搜索引擎蜘蛛名稱代碼及爬尋返回代碼》相關介紹來查詢一下你的網站日志),而在抓取的時候評價重要性主要的依據是某個網頁的鏈接深度。
由于不可能抓取所有的網頁,有些網絡蜘蛛對一些不太重要的網站,設置了訪問的層數,例如,下圖中所示:
A為起始網頁,屬于0層,B、C、D、E、F屬于第1 層,G、H屬于第2層,I屬于第3層,如果網絡蜘蛛設置的訪問層數為2的話,網頁I是不會被訪問到的,這也讓有些網站上一部分網頁能夠在搜索引擎上搜索到,另外一部分不能被搜索到。
對于網站設計者來說,扁平化的網站結構設計有助于搜索引擎抓取其更多的網頁。
網絡蜘蛛在訪問網站網頁的時候,經常會遇到加密數據和網頁權限的問題,有些網頁是需要會員權限才能訪問。
當然,網站的所有者可以通過協議讓網絡蜘蛛不去抓取,但對于一些出售報告的網站,他們希望搜索引擎能搜索到他們的報告,但又不能完全免費的讓搜索者查看,這樣就需要給網絡蜘蛛提供相應的用戶名和密碼。
網絡蜘蛛可以通過所給的權限對這些網頁進行網頁抓取,從而提供搜索,而當搜索者點擊查看該網頁的時候,同樣需要搜索者提供相應的權限驗證。
二、追蹤鏈接
由于搜索引擎蜘蛛為了能夠抓取網上盡量多的頁面,它會追蹤網頁上的鏈接,從一個頁面爬到下一個頁面,就好像是蜘蛛在蜘蛛網上爬行那樣,這就是搜索引擎蜘蛛這個名稱的來因。
整個互聯網網站都是相互鏈接組成的,也就是說,搜索引擎蜘蛛從任何一個頁面出發最終都會爬完所有頁面。
當然網站和頁面鏈接結構太過于復雜,所以蜘蛛只有采用一定的方法才能夠爬完所有頁面,據馬海祥了解最簡單的爬行策略有3種:
1、最佳優先
最佳優先搜索策略按照一定的網頁分析算法,預測候選URL與目標網頁的相似度,或與主題的相關性,并選取評價最好的一個或幾個URL進行抓取,它只訪問經過網頁分析算法預測為“有用”的網頁。
存在的一個問題是,在爬蟲抓取路徑上的很多相關網頁可能被忽略,因為最佳優先策略是一種局部最優搜索算法,因此需要將最佳優先結合具體的應用進行改進,以跳出局部最優點,據馬海祥博客的研究發現,這樣的閉環調整可以將無關網頁數量降低30%~90%。
2、深度優先
深度優先是指蜘蛛沿著發現的鏈接一直向前爬行,直到前面再也沒有其他鏈接,然后返回到第一個頁面,沿著另一個鏈接再一直往前爬行。
3、廣度優先
廣度優先是指蜘蛛在一個頁面發現多個鏈接時,不是順著一個鏈接一直向前,而是把頁面上所有鏈接都爬一遍,然后再進入第二層頁面沿著第二層上發現的鏈接爬向第三層頁面。
從理論上說,無論是深度優先還是廣度優先,只要給蜘蛛足夠的時間,都能爬完整個互聯網。
在實際工作中,蜘蛛的帶寬資源、時間都不是無限的,也不能爬完所有頁面,實際上最大的搜索引擎也只是爬行和收錄了互聯網的一小部分,當然也并不是搜索引擎蜘蛛爬取的越多越好,這點我曾在馬海祥博客的《抓取網站的搜索引擎蜘蛛是不是越多越好》一文中跟大家做過詳細的介紹。
因此,為了盡量多的抓取用戶信息,深度優先和廣度優先通常是混合使用的,這樣既可以照顧到盡量多的網站,也能照顧到一部分網站的內頁。
三、搜索引擎蜘蛛工作中的信息收集
信息收集模塊包括“蜘蛛控制”和“網絡蜘蛛”兩部分,“蜘蛛”這個稱呼形象的描述出了信息收集模塊在網絡數據形成的“Web”上進行信息獲取的功能。
總體而言,網絡蜘蛛從種子網頁出發,通過反復下載網頁并從文檔中尋找未曾見過的URL,達到訪問其他網頁得以遍歷Web的目的。
而其工作策略一般則可以分為累積式抓取(cumulative crawling)和增量式抓取(incremental crawling)兩種。
1、累積式抓取
累積式抓取是指從某一個時間點開始,通過遍歷的方式抓取系統所能允許存儲和處理的所有網頁。在理想的軟硬件環境下,經過足夠的運行時間,累積式抓取的策略可以保證抓取到相當規模的網頁集合。
但在馬海祥看來由于Web數據的動態特性,集合中網頁的被抓取時間點是不同的,頁面被更新的情況也不同,因此累積式抓取到的網頁集合事實上并無法與真實環境中的網絡數據保持一致。
2、增量式抓取
與累積式抓取不同,增量式抓取是指在具有一定量規模的網絡頁面集合的基礎上,采用更新數據的方式選取已有集合中的過時網頁進行抓取,以保證所抓取到的數據與真實網絡數據足夠接近。
進行增量式抓取的前提是,系統已經抓取了足夠數量的網絡頁面,并具有這些頁面被抓取的時間信息。面向實際應用環境的網絡蜘蛛設計中,通常既包括累積式抓取,也包括增量式抓取的策略。
累積式抓取一般用于數據集合的整體建立或大規模更新階段,而增量式抓取則主要針對數據集合的日常維護與即時更新。
在確定了抓取策略之后,如何從充分利用網絡帶寬,合理確定網頁數據更新的時間點就成了網絡蜘蛛運行策略中的核心問題。
總體而言,在合理利用軟硬件資源進行針對網絡數據的即時抓取方面,已經形成了相對比較成熟的技術和實用性解決方案,馬海祥覺得在這方面目前所需解決的主要問題是如何更好的處理動態網絡數據問題(如數量越來越龐大的Web2.0數據等),以及更好的根據網頁質量修正抓取策略的問題。
四、數據庫
為了避免重復爬行和抓取網址,搜索引擎會建立一個數據庫,記錄已被發現還沒有抓取的頁面和已經被抓取的頁面,那么數據庫中的URL是怎么來的呢?
1、人工錄入種子網站
這個簡單的來說,就是我們建好一個新站后,向百度、Google或360提交的網址收錄。
2、蜘蛛抓取頁面
如果搜索引擎蜘蛛在爬取的過程中,發現了新連接URL,數據庫中沒有,就會存入待訪問數據庫(網站觀察期)。
蜘蛛按重要性從待訪問數據庫中提取URL,訪問并抓取頁面,然后把這個URL從待訪問地址庫中刪除,放進已訪問地址庫中,所以馬海祥建議各位站長在網站觀察期的時候盡量有規律的更新網站是必要的。
3、站長提交網站
一般來說,提交網站只是把網站存入待訪問數據庫,如果網站持久不更新蜘蛛也不會光顧,搜索引擎收錄的頁面都是蜘蛛自己追蹤鏈接得到的。
所以你提交給搜索引擎其實用處不大,還是要根據后期你網站更新程度來考慮,搜索引擎更喜歡自己沿著鏈接發現新頁面,當然如果說你的SEO技術夠老練,并且有這能力,可以試一下,說不定會有意想不到的效果,不過,對于一般在站長來說,馬海祥還是建議讓蜘蛛自然的爬行和抓取到新站頁面。
五、吸引蜘蛛
雖然理論上說蜘蛛可以爬行和抓取所有頁面,但實際上是不可能完成的,那么SEO人員想要收錄更多的頁面就只有想辦法引誘蜘蛛抓取。
既然抓不了所有頁面,那么我們就要讓它抓取重要頁面,因為重要頁面在索引中起到重要決定,直接影響排名的因素,哪么那些頁面算是比較重要的呢?對此,馬海祥也特意整理了以下幾個我認為比較重要頁面,具體有這么幾個特點:
1、網站和頁面權重
質量高、年齡老的網站被給予很高的權重,這種網站上的頁面蜘蛛爬行的深度比較高,所以會有更多的內頁被收錄。
2、頁面更新度
蜘蛛每次爬行都會把頁面數據儲存起來,如果第二次爬行時發現此頁面與第一次收錄的內容完全一樣,說明頁面沒有更新,蜘蛛也沒必要經常再來爬行和抓取。
如果頁面內容經常更新,蜘蛛就會頻繁的爬行和抓取,那么,頁面上的新鏈接自然的會被蜘蛛更快的追蹤和抓取,這也就是為什么需要每天更新文章(具體可查看馬海祥博客的《百度收錄網站文章的現狀及原則依據》相關介紹)。
3、導入鏈接
無論是外部鏈接還是同一個網站的內部鏈接,要被蜘蛛抓取,就必須有導入鏈接進入頁面,否則蜘蛛根本不知道頁面的存在。此時的URL鏈接起著非常重要的作用,內鏈的重要性發揮出來了。
另外,馬海祥覺得高質量的導入鏈接也經常使頁面上的導出鏈接被爬行的深度增加。
這也就是為什么大多數站長或SEO都要高質量友情鏈接,因為蜘蛛從對方網站爬行到你網站之次數多,深度也高。
4、與首頁點擊距離
一般來說網站首頁權重最高,大部分外部鏈接都指向首頁,蜘蛛訪問最頻繁的也是首頁,離首頁點擊距離越近,頁面權重越高,被蜘蛛爬行的機會也就越大。
這也就是為什么要求網站框架建設點擊三次就能查看完整個網站的意思。
六、蜘蛛爬行時的復制內容檢測
一般都知道在搜索引擎索引環節中中會進行去重處理,其實在蜘蛛爬行的時候已經在進行檢測,當蜘蛛爬行和抓取文件時會進行一定程度的復制內容檢測,遇到權重低的網站上大量轉載或抄襲內容時,很可能不再繼續爬行。
所以對于新站來說切莫采集和抄襲,這也就是為什么很多站長查看日志的時候發現了蜘蛛,但是頁面從來沒有被抓取的原因,因為爬行發現是重復內容那么它講放棄抓取也就只停留在爬行過的階段。
馬海祥博客點評:
雖說蜘蛛的作用就是讓搜索引擎對有效鏈接進行搜尋,但并不意味著蜘蛛越多越好,有時過多的蜘蛛來網站抓取會造成一定的負面效果,會影響服務器的運行,導致網頁打開緩慢。
本文為馬海祥博客原創文章,如想轉載,請注明原文網址摘自于http://www.xkwvgc.live/seoyjy/797.html,注明出處;否則,禁止轉載;謝謝配合!上一篇:深度解讀百度搜索引擎網頁質量白皮書
下一篇:錨文本鏈接是什么?
今日話題更多>
盤古搜索和即刻搜索合并為中國搜索霸 就在今日凌晨,盤古搜索和即刻搜索合并的中國搜索已悄然上線,目前盤古搜索和即刻搜索的域名已經跳轉到中國……
第四屆百度技術開放日:大數據引擎驅 百度第四屆技術開放日在北京舉行,此次會議以“大數據引擎驅動未來”為主題,是百度在互聯網與傳統產業深度……
移動電商能否掀起互聯網的顛覆性革命 最近,聽到很多互聯網的成功人士在強調說:如今的中國互聯網變化真的很快,尤其是電商行業,如果不努力時刻……
SEO研究院 更多 >>
-
揭秘搜索引擎中的反SEO作弊研
從搜索引擎優化服務開始,分析了現在所存在的搜索引擎優化的作弊…… -
在服務器上設置網站IIS日志的
在Windows操作系統中,IIS日志記錄應該視為ISS所必需的而不是可…… -
SEO鏈輪的原理和操作方法
SEO鏈輪(SEO Link Wheels)是指通過在互聯網上建立大量的獨立站點…… -
Google搜索質量小組專業解答的
2013年對于眾多站長和SEO可以說是最為波折的一年,這一年百度出…… -
判斷網站被黑的特征表現及解決
目前國內網站的安全問題十分嚴峻,眾多網站由第三方代建,維護人…… -
影響搜索引擎算法和SEO優化的1
眾所周知,網站優化是隨著搜索引擎算法的升級不斷的探索和尋求效……