1、蜘蛛
搜索引擎用來爬行和訪問頁面的程序被稱為蜘蛛(spider)或機器人(bot)。
搜索引擎蜘蛛訪問網站頁面的過程與普通用戶使用瀏覽器的過程相似。蜘蛛程序發出頁面訪問請求后,服務器返回HTML代碼,蜘蛛程序將收到的HTML代碼存入原始頁面數據庫。搜索引擎為了提高爬行和抓取速度,常使用多個蜘蛛并發分布爬行。
蜘蛛在訪問任何一個網站時,都會先訪問網站根目錄下的robots文件。如果robots文件禁止搜索引擎抓取某些文件或目錄,蜘蛛將遵守協議,不抓取被禁止的網址。
2、跟蹤鏈接
為了抓取盡量多的頁面,搜索引擎蜘蛛會跟蹤頁面上的鏈接,從一個頁面爬行到下一個頁面,就好像蜘蛛在蜘蛛網上爬行那樣,這也是搜索引擎蜘蛛這個名稱的由來。
整個互聯網是由相互鏈接的網站及頁面組成的。從理論上說,蜘蛛從任何一個頁面出發,順著鏈接都可以爬行到網上的所有頁面(除了一些與其他網站沒有任何鏈接的孤島頁面)。當然,由于網站及頁面鏈接結構異常復雜,蜘蛛需要采取一定的基于圖論的爬行策略才能遍歷網上所有的頁面。
最簡單的爬行遍歷策略分為兩種:一種是深度優先,另一種是廣度優先。
所謂深度優先,指的是蜘蛛沿著發現的鏈接一直向前爬行,直到前面再也沒有其他鏈接,然后返回到第一個頁面,沿著另一個鏈接再一直往前爬行。蜘蛛跟蹤鏈接,從A頁面爬行到 A1、A2、A3、A4。爬完A4頁面后,如果已經沒有其他鏈接可以跟蹤,則返回A頁面,順著頁面上的另一個鏈接,爬行到 BI、B2、B3、B4。在深度優先策略中,蜘蛛一直爬到無法再向前,才返回爬行另一條線。
廣度優先是指蜘蛛在一個頁面上發現多個鏈接時,不是順著一個鏈接一直向前,而是把頁面上所有第一層鏈接都爬行一遍,然后再沿著第二層頁面上發現的鏈接爬向第三層頁面。蜘蛛從A頁面順著鏈接爬行到A1、B1、C1頁面,直到A 頁面上的所有鏈接都爬行完畢,再從 A1頁面發現的下一層鏈接,爬行到 A2、A3、A4頁面…

從理論上說,無論是深度優先還是廣度優先,只要給予蜘蛛足夠的時間,都能爬完整個互聯網。但在實際工作中,蜘蛛的帶寬資源、時間都不是無限的,不可能、也沒必要爬完所有頁面。實際上,最大的搜索引擎也只是爬行和收錄了互聯網的一小部分內容。
3、吸引蜘蛛爬取的要點
(1) 網站權重。高質量、老域名網站的頁面更容易被深度爬取,收錄更多內頁。
(2) 頁面更新頻率。蜘蛛會記錄頁面版本,頻繁更新的頁面會被更頻繁抓取,新鏈接也能更快被發現。
(3) 導入鏈接。無論是外鏈還是內鏈,頁面必須有入口鏈接才能被蜘蛛發現。高質量外鏈能提升抓取深度。
(4) 與首頁的距離。一般來說,首頁權重最高,離首頁越近的頁面,被蜘蛛爬行的幾率越大。
(5) URL結構。頁面權重越高,越容易被蜘蛛抓取。蜘蛛會基于鏈接結構、URL長度等因素進行預判,除了鏈接、與首頁距離、歷史數據等因素,短的、層次淺的URL也可能被直觀地認為在網站上的權重相對較高。
4、地址庫及調度系統
為了避免重復爬行和抓取網址,搜索引擎會建立地址庫,記錄已經被發現但還沒有抓取的頁面,以及已經被抓取的頁面。蜘蛛在頁面上發現鏈接后并不是馬上就去訪問,而是將URL存入地址庫,然后統一由調度系統安排抓取。
蜘蛛按重要性從待訪問地址庫中提取URL,訪問并抓取頁面,然后把這個URL從待訪問地址庫中刪除,存放進已訪問地址庫中。無論是通過 XML網站地圖還是通過表格提交的網址,都只是存入地址庫而已,是否抓取和收錄取決于其頁面的重要性和質量。搜索引擎收錄的絕大部分頁面是蜘蛛自己跟蹤鏈接得到的。對中小網站來說,提交頁面的作用微乎其微,搜索引擎更喜歡自己沿著鏈接發現新頁面。大型網站提交XML網站地圖對收錄有一定幫助。
5、文件存儲
搜索引擎蜘蛛抓取的數據存入原始頁面數據庫,其中的頁面數據與用戶瀏覽器得到的 HTML 是完全一樣的,每個URL都有一個獨特的文件編號。
6、爬行時的復制內容檢測
復制內容檢測通常在預處理階段完成,但蜘蛛在爬行時也會初步識別,但蜘蛛在爬行和抓取文件時,也會進行一定程度的復制內容檢測。若發現權重很低的網站上出現大量轉載或抄襲內容,蜘蛛很可能不再繼續爬行。這也是有的站長在日志文件中發現了蜘蛛,但頁面卻從來沒有被真正收錄過的原因之一。
改編自昝輝《SEO實戰密碼》第5版