1、蜘蛛
搜索引擎用來爬行和訪問頁面的程序被稱為蜘蛛(spider)或機(jī)器人(bot)。
搜索引擎蜘蛛訪問網(wǎng)站頁面的過程與普通用戶使用瀏覽器的過程相似。蜘蛛程序發(fā)出頁面訪問請(qǐng)求后,服務(wù)器返回HTML代碼,蜘蛛程序?qū)⑹盏降腍TML代碼存入原始頁面數(shù)據(jù)庫。搜索引擎為了提高爬行和抓取速度,常使用多個(gè)蜘蛛并發(fā)分布爬行。
蜘蛛在訪問任何一個(gè)網(wǎng)站時(shí),都會(huì)先訪問網(wǎng)站根目錄下的robots文件。如果robots文件禁止搜索引擎抓取某些文件或目錄,蜘蛛將遵守協(xié)議,不抓取被禁止的網(wǎng)址。
2、跟蹤鏈接
為了抓取盡量多的頁面,搜索引擎蜘蛛會(huì)跟蹤頁面上的鏈接,從一個(gè)頁面爬行到下一個(gè)頁面,就好像蜘蛛在蜘蛛網(wǎng)上爬行那樣,這也是搜索引擎蜘蛛這個(gè)名稱的由來。
整個(gè)互聯(lián)網(wǎng)是由相互鏈接的網(wǎng)站及頁面組成的。從理論上說,蜘蛛從任何一個(gè)頁面出發(fā),順著鏈接都可以爬行到網(wǎng)上的所有頁面(除了一些與其他網(wǎng)站沒有任何鏈接的孤島頁面)。當(dāng)然,由于網(wǎng)站及頁面鏈接結(jié)構(gòu)異常復(fù)雜,蜘蛛需要采取一定的基于圖論的爬行策略才能遍歷網(wǎng)上所有的頁面。
最簡(jiǎn)單的爬行遍歷策略分為兩種:一種是深度優(yōu)先,另一種是廣度優(yōu)先。
所謂深度優(yōu)先,指的是蜘蛛沿著發(fā)現(xiàn)的鏈接一直向前爬行,直到前面再也沒有其他鏈接,然后返回到第一個(gè)頁面,沿著另一個(gè)鏈接再一直往前爬行。蜘蛛跟蹤鏈接,從A頁面爬行到 A1、A2、A3、A4。爬完A4頁面后,如果已經(jīng)沒有其他鏈接可以跟蹤,則返回A頁面,順著頁面上的另一個(gè)鏈接,爬行到 BI、B2、B3、B4。在深度優(yōu)先策略中,蜘蛛一直爬到無法再向前,才返回爬行另一條線。
廣度優(yōu)先是指蜘蛛在一個(gè)頁面上發(fā)現(xiàn)多個(gè)鏈接時(shí),不是順著一個(gè)鏈接一直向前,而是把頁面上所有第一層鏈接都爬行一遍,然后再沿著第二層頁面上發(fā)現(xiàn)的鏈接爬向第三層頁面。蜘蛛從A頁面順著鏈接爬行到A1、B1、C1頁面,直到A 頁面上的所有鏈接都爬行完畢,再從 A1頁面發(fā)現(xiàn)的下一層鏈接,爬行到 A2、A3、A4頁面…
從理論上說,無論是深度優(yōu)先還是廣度優(yōu)先,只要給予蜘蛛足夠的時(shí)間,都能爬完整個(gè)互聯(lián)網(wǎng)。但在實(shí)際工作中,蜘蛛的帶寬資源、時(shí)間都不是無限的,不可能、也沒必要爬完所有頁面。實(shí)際上,最大的搜索引擎也只是爬行和收錄了互聯(lián)網(wǎng)的一小部分內(nèi)容。
3、吸引蜘蛛爬取的要點(diǎn)
(1) 網(wǎng)站權(quán)重。高質(zhì)量、老域名網(wǎng)站的頁面更容易被深度爬取,收錄更多內(nèi)頁。
(2) 頁面更新頻率。蜘蛛會(huì)記錄頁面版本,頻繁更新的頁面會(huì)被更頻繁抓取,新鏈接也能更快被發(fā)現(xiàn)。
(3) 導(dǎo)入鏈接。無論是外鏈還是內(nèi)鏈,頁面必須有入口鏈接才能被蜘蛛發(fā)現(xiàn)。高質(zhì)量外鏈能提升抓取深度。
(4) 與首頁的距離。一般來說,首頁權(quán)重最高,離首頁越近的頁面,被蜘蛛爬行的幾率越大。
(5) URL結(jié)構(gòu)。頁面權(quán)重越高,越容易被蜘蛛抓取。蜘蛛會(huì)基于鏈接結(jié)構(gòu)、URL長度等因素進(jìn)行預(yù)判,除了鏈接、與首頁距離、歷史數(shù)據(jù)等因素,短的、層次淺的URL也可能被直觀地認(rèn)為在網(wǎng)站上的權(quán)重相對(duì)較高。
4、地址庫及調(diào)度系統(tǒng)
為了避免重復(fù)爬行和抓取網(wǎng)址,搜索引擎會(huì)建立地址庫,記錄已經(jīng)被發(fā)現(xiàn)但還沒有抓取的頁面,以及已經(jīng)被抓取的頁面。蜘蛛在頁面上發(fā)現(xiàn)鏈接后并不是馬上就去訪問,而是將URL存入地址庫,然后統(tǒng)一由調(diào)度系統(tǒng)安排抓取。
蜘蛛按重要性從待訪問地址庫中提取URL,訪問并抓取頁面,然后把這個(gè)URL從待訪問地址庫中刪除,存放進(jìn)已訪問地址庫中。無論是通過 XML網(wǎng)站地圖還是通過表格提交的網(wǎng)址,都只是存入地址庫而已,是否抓取和收錄取決于其頁面的重要性和質(zhì)量。搜索引擎收錄的絕大部分頁面是蜘蛛自己跟蹤鏈接得到的。對(duì)中小網(wǎng)站來說,提交頁面的作用微乎其微,搜索引擎更喜歡自己沿著鏈接發(fā)現(xiàn)新頁面。大型網(wǎng)站提交XML網(wǎng)站地圖對(duì)收錄有一定幫助。
5、文件存儲(chǔ)
搜索引擎蜘蛛抓取的數(shù)據(jù)存入原始頁面數(shù)據(jù)庫,其中的頁面數(shù)據(jù)與用戶瀏覽器得到的 HTML 是完全一樣的,每個(gè)URL都有一個(gè)獨(dú)特的文件編號(hào)。
6、爬行時(shí)的復(fù)制內(nèi)容檢測(cè)
復(fù)制內(nèi)容檢測(cè)通常在預(yù)處理階段完成,但蜘蛛在爬行時(shí)也會(huì)初步識(shí)別,但蜘蛛在爬行和抓取文件時(shí),也會(huì)進(jìn)行一定程度的復(fù)制內(nèi)容檢測(cè)。若發(fā)現(xiàn)權(quán)重很低的網(wǎng)站上出現(xiàn)大量轉(zhuǎn)載或抄襲內(nèi)容,蜘蛛很可能不再繼續(xù)爬行。這也是有的站長在日志文件中發(fā)現(xiàn)了蜘蛛,但頁面卻從來沒有被真正收錄過的原因之一。
改編自昝輝《SEO實(shí)戰(zhàn)密碼》第5版