爬行和抓取
2023-02-27?
圍觀熱度 4594?技術(shù)推薦
爬行和抓取是搜索引擎工作的第一步,完成數(shù)據(jù)收集的任務(wù)。
1.蜘蛛
搜索引擎用來爬行和訪問頁面的程序被稱為蜘蛛(spider)或機器人(bot)。
搜索引擎蜘蛛訪問網(wǎng)站頁面時類似于普通用戶使用的瀏覽器。蜘蛛程序發(fā)出頁面訪問請求后,服務(wù)器返回HTML代碼,蜘蛛程序把收到的代碼存入原始頁面數(shù)據(jù)庫。搜索引擎為了提高爬行和抓取速度,都使用多個蜘蛛并發(fā)分布爬行。
蜘蛛訪問任何一個網(wǎng)站時,都會先訪問網(wǎng)站根目錄下的robots.txt文件。如果robots.txt文件禁止搜索引擎抓取某些文件或目錄,蜘蛛將遵守協(xié)議,不抓取被禁止的網(wǎng)址。和瀏覽器一樣,搜索引擎蜘蛛也有標(biāo)明自己身份的用戶代理名稱,站長可以在日志文件中看到搜索引擎的特定用戶代理,從而辨識搜索引擎蜘蛛。
2.跟蹤鏈接
為了抓取網(wǎng)上盡量多的頁面,搜索引擎蜘蛛會跟蹤頁面上的鏈接,從一個頁面爬到下一個頁面,就好像蜘蛛在蜘蛛網(wǎng)上爬行那樣,這也就是搜索引擎蜘蛛這個名稱的由來。
整個互聯(lián)網(wǎng)是由相互鏈接的網(wǎng)站及頁面組成的。從理論上說,蜘蛛從任何一個頁面出發(fā),順著鏈接都可以爬行到網(wǎng)上的所有頁面。當(dāng)然,由于網(wǎng)站及頁面鏈接結(jié)構(gòu)異常復(fù)雜,蜘蛛需要采取一定的爬行策略才能遍歷網(wǎng)上所有頁面。
最簡單的爬行遍歷策略分為兩種,一種是深度優(yōu)先,另一種是廣度優(yōu)先。所謂深度優(yōu)先,指的是蜘蛛沿著發(fā)現(xiàn)的鏈接一直向前爬行,直到前面再也沒有其他鏈接,然后返回到第一個頁面,沿著另一個鏈接再一直往前爬行。
如圖2-25所示,蜘蛛跟蹤鏈接,從A頁面爬行到A1、A2、A3、A4,到A4頁面后,已經(jīng)沒有其他鏈接可以跟蹤就返回A頁面,順著頁面上的另一個鏈接,爬行到B1、B2、B3、B4。在深度優(yōu)先策略中,蜘蛛一直爬到無法再向前,才返回爬另一條線。
圖2-25 深度優(yōu)先遍歷策略
廣度優(yōu)先是指蜘蛛在一個頁面上發(fā)現(xiàn)多個鏈接時,不是順著一個鏈接一直向前,而是把頁面上所有第一層鏈接都爬一遍,然后再沿著第二層頁面上發(fā)現(xiàn)的鏈接爬向第三層頁面。
如圖2-26所示,蜘蛛從A頁面順著鏈接爬行到A1、B1、C1頁面,直到A頁面上的所有鏈接都爬行完,然后再從A1頁面發(fā)現(xiàn)的下一層鏈接,爬行到A2、A3、A4、……頁面。
圖2-26 廣度優(yōu)先遍歷策略
從理論上說,無論是深度優(yōu)先還是廣度優(yōu)先,只要給蜘蛛足夠的時間,都能爬完整個互聯(lián)網(wǎng)。在實際工作中,蜘蛛的帶寬資源、時間都不是無限的,也不可能爬完所有頁面。實際上最大的搜索引擎也只是爬行和收錄了互聯(lián)網(wǎng)的一小部分。
深度優(yōu)先和廣度優(yōu)先通常是混合使用的,這樣既可以照顧到盡量多的網(wǎng)站(廣度優(yōu)先),也能照顧到一部分網(wǎng)站的內(nèi)頁(深度優(yōu)先),同時也會考慮頁面權(quán)重、網(wǎng)站規(guī)模、外鏈、更新等因素。
3.吸引蜘蛛
由此可見,雖然理論上蜘蛛能爬行和抓取所有頁面,但實際上不能、也不會這么做。SEO人員要想讓自己的更多頁面被收錄,就要想方設(shè)法吸引蜘蛛來抓取。既然不能抓取所有頁面,蜘蛛所要做的就是盡量抓取重要頁面。哪些頁面被認(rèn)為比較重要呢?有幾方面影響因素。
網(wǎng)站和頁面權(quán)重。質(zhì)量高、資格老的網(wǎng)站被認(rèn)為權(quán)重比較高,這種網(wǎng)站上的頁面被爬行的深度也會比較高,所以會有更多內(nèi)頁被收錄。
頁面更新度。蜘蛛每次爬行都會把頁面數(shù)據(jù)存儲起來。如果第二次爬行發(fā)現(xiàn)頁面與第一次收錄的完全一樣,說明頁面沒有更新,多次抓取后蜘蛛會對頁面更新頻率有所了解,不常更新的頁面,蜘蛛也就沒有必要經(jīng)常抓取。如果頁面內(nèi)容經(jīng)常更新,蜘蛛就會更加頻繁地訪問這種頁面,頁面上出現(xiàn)的新鏈接,也自然會被蜘蛛更快地跟蹤,抓取新頁面。
導(dǎo)入鏈接。無論是外部鏈接還是同一個網(wǎng)站的內(nèi)部鏈接,要被蜘蛛抓取,就必須有導(dǎo)入鏈接進入頁面,否則蜘蛛根本沒有機會知道頁面的存在。高質(zhì)量的導(dǎo)入鏈接也經(jīng)常使頁面上的導(dǎo)出鏈接被爬行深度增加。
與首頁點擊距離。一般來說網(wǎng)站上權(quán)重最高的是首頁,大部分外部鏈接是指向首頁的,蜘蛛訪問最頻繁的也是首頁。離首頁點擊距離越近,頁面權(quán)重越高,被蜘蛛爬行的機會也越大。
URL結(jié)構(gòu)。頁面權(quán)重是在收錄并進行迭代計算后才知道的,那么前面說的頁面權(quán)重高有利于被抓取,搜索引擎蜘蛛在抓取前怎么知道這個頁面的權(quán)重呢?所以蜘蛛要進行預(yù)判,除了鏈接、與首頁距離、歷史數(shù)據(jù)等因素外,短的、層次淺的URL也可能被直觀認(rèn)為在網(wǎng)站上的權(quán)重相對較高。
4.地址庫
為了避免重復(fù)爬行和抓取網(wǎng)址,搜索引擎會建立一個地址庫,記錄已經(jīng)被發(fā)現(xiàn)、但還沒有抓取的頁面,以及已經(jīng)被抓取的頁面。蜘蛛在頁面上發(fā)現(xiàn)鏈接后并不是馬上就去訪問,而是將URL存入地址庫,然后統(tǒng)一安排抓取。
地址庫中的URL有幾個來源:
(1)人工錄入的種子網(wǎng)站。
(2)蜘蛛抓取頁面后,從HTML中解析出新的鏈接URL,與地址庫中的數(shù)據(jù)進行對比,如果是地址庫中沒有的網(wǎng)址,就存入待訪問地址庫。
(3)站長通過搜索引擎網(wǎng)頁提交表格提交進來的網(wǎng)址。
(4)站長通過XML網(wǎng)站地圖、站長平臺提交的網(wǎng)址。
蜘蛛按重要性從待訪問地址庫中提取URL,訪問并抓取頁面,然后把這個URL從待訪問地址庫中刪除,放進已訪問地址庫中。
大部分主流搜索引擎都提供一個表格,讓站長提交網(wǎng)址。不過這些提交來的網(wǎng)址都只是存入地址庫而已,是否收錄還要看頁面重要性如何。搜索引擎所收錄的絕大部分頁面是蜘蛛自己跟蹤鏈接得到的??梢哉f提交頁面作用微乎其微,搜索引擎更喜歡自己沿著鏈接發(fā)現(xiàn)新頁面。
5.文件存儲
搜索引擎蜘蛛抓取的數(shù)據(jù)存入原始頁面數(shù)據(jù)庫。其中的頁面數(shù)據(jù)與用戶瀏覽器得到的HTML是完全一樣的。每個URL都有一個獨特的文件編號。
6.爬行時的復(fù)制內(nèi)容檢測
檢測并刪除復(fù)制內(nèi)容通常是在下面介紹的預(yù)處理過程中進行的,但現(xiàn)在的蜘蛛在爬行和抓取文件時也會進行一定程度的復(fù)制內(nèi)容檢測。遇到權(quán)重很低的網(wǎng)站上大量轉(zhuǎn)載或抄襲內(nèi)容時,很可能不再繼續(xù)爬行。這也就是有的站長在日志文件中發(fā)現(xiàn)了蜘蛛,但頁面從來沒有被真正收錄過的原因之一。