搜索引擎蜘蛛的基本原理及工作流程
時(shí)間:2022-05-29 03:45:01 | 來源:網(wǎng)絡(luò)營銷
時(shí)間:2022-05-29 03:45:01 來源:網(wǎng)絡(luò)營銷
搜索引擎用來爬行和訪問頁面的程序被稱為蜘蛛(spider),也叫機(jī)器人(bot)。搜索引擎蜘蛛訪問網(wǎng)站頁面時(shí)類似于普通用戶使用瀏覽器,蜘蛛程序發(fā)出頁面訪問請求后,服務(wù)器返回HTML代碼,蜘蛛程序把收到的代碼存入原始頁面數(shù)據(jù)庫,搜索引擎為了提高爬行和抓取的速度,都使用多個(gè)蜘蛛分布爬行。
蜘蛛訪問網(wǎng)站時(shí),首先會訪問網(wǎng)站根目錄下的robots.txt文件,如果robots.txt文件禁止搜索引擎抓取某些網(wǎng)頁或者內(nèi)容,再或者網(wǎng)站,蜘蛛將遵循協(xié)議,不對其進(jìn)行抓取(具體可查看億企邦《robots協(xié)議文件的寫法及語法屬性解釋》的相關(guān)介紹)。
蜘蛛也是有自己的代理名稱的,在站長日志中可以看出蜘蛛爬行的痕跡,這也就是為什么這么多站長解答問題的時(shí)候,都會說先查看網(wǎng)站日志(作為一個(gè)出色的SEO你必須具備不借助任何軟件查看網(wǎng)站日志的能力,并且要非常熟悉其代碼的意思)。
一、搜索引擎蜘蛛的基本原理 搜索引擎蜘蛛即Spider,是一個(gè)很形象的名字,把互聯(lián)網(wǎng)比喻成一個(gè)蜘蛛網(wǎng),那么Spider就是在網(wǎng)上爬來爬去的蜘蛛。
網(wǎng)絡(luò)蜘蛛是通過網(wǎng)頁的鏈接地址來尋找網(wǎng)頁,從網(wǎng)站某一個(gè)頁面(通常是首頁)開始,讀取網(wǎng)頁的內(nèi)容,找到在網(wǎng)頁中的其它鏈接地址,然后通過這些鏈接地址尋找下一個(gè)網(wǎng)頁,這樣一直循環(huán)下去,直到把這個(gè)網(wǎng)站所有的網(wǎng)頁都抓取完為止。
如果把整個(gè)互聯(lián)網(wǎng)當(dāng)成一個(gè)網(wǎng)站,那么網(wǎng)絡(luò)蜘蛛就可以用這個(gè)原理把互聯(lián)網(wǎng)上所有的網(wǎng)頁都抓取下來。
對于搜索引擎來說,要抓取互聯(lián)網(wǎng)上所有的網(wǎng)頁幾乎是不可能的,從目前公布的數(shù)據(jù)來看,容量最大的搜索引擎也不過是抓取了整個(gè)網(wǎng)頁數(shù)量的百分之四十左右。
這其中的原因一方面是抓取技術(shù)的瓶頸,100億網(wǎng)頁的容量是100×2000G字節(jié),即使能夠存儲,下載也存在問題(按照一臺機(jī)器每秒下載20K計(jì)算,需要340臺機(jī)器不停的下載一年時(shí)間,才能把所有網(wǎng)頁下載完畢),同時(shí),由于數(shù)據(jù)量太大,在提供搜索時(shí)也會有效率方面的影響。
因此,許多搜索引擎的網(wǎng)絡(luò)蜘蛛只是抓取那些重要的網(wǎng)頁(每個(gè)搜索引擎的蜘蛛抓取的原則也都不同,具體可對照一下億企邦的《解讀IIS日志中搜索引擎蜘蛛名稱代碼及爬尋返回代碼》相關(guān)介紹來查詢一下你的網(wǎng)站日志),而在抓取的時(shí)候評價(jià)重要性主要的依據(jù)是某個(gè)網(wǎng)頁的鏈接深度。
由于不可能抓取所有的網(wǎng)頁,有些網(wǎng)絡(luò)蜘蛛對一些不太重要的網(wǎng)站,設(shè)置了訪問的層數(shù),例如,下圖中所示:
A為起始網(wǎng)頁,屬于0層,B、C、D、E、F屬于第1 層,G、H屬于第2層,I屬于第3層,如果網(wǎng)絡(luò)蜘蛛設(shè)置的訪問層數(shù)為2的話,網(wǎng)頁I是不會被訪問到的,這也讓有些網(wǎng)站上一部分網(wǎng)頁能夠在搜索引擎上搜索到,另外一部分不能被搜索到。
對于網(wǎng)站設(shè)計(jì)者來說,扁平化的網(wǎng)站結(jié)構(gòu)設(shè)計(jì)有助于搜索引擎抓取其更多的網(wǎng)頁。
網(wǎng)絡(luò)蜘蛛在訪問網(wǎng)站網(wǎng)頁的時(shí)候,經(jīng)常會遇到加密數(shù)據(jù)和網(wǎng)頁權(quán)限的問題,有些網(wǎng)頁是需要會員權(quán)限才能訪問。
當(dāng)然,網(wǎng)站的所有者可以通過協(xié)議讓網(wǎng)絡(luò)蜘蛛不去抓取,但對于一些出售報(bào)告的網(wǎng)站,他們希望搜索引擎能搜索到他們的報(bào)告,但又不能完全免費(fèi)的讓搜索者查看,這樣就需要給網(wǎng)絡(luò)蜘蛛提供相應(yīng)的用戶名和密碼。
網(wǎng)絡(luò)蜘蛛可以通過所給的權(quán)限對這些網(wǎng)頁進(jìn)行網(wǎng)頁抓取,從而提供搜索,而當(dāng)搜索者點(diǎn)擊查看該網(wǎng)頁的時(shí)候,同樣需要搜索者提供相應(yīng)的權(quán)限驗(yàn)證。
二、追蹤鏈接 由于搜索引擎蜘蛛為了能夠抓取網(wǎng)上盡量多的頁面,它會追蹤網(wǎng)頁上的鏈接,從一個(gè)頁面爬到下一個(gè)頁面,就好像是蜘蛛在蜘蛛網(wǎng)上爬行那樣,這就是搜索引擎蜘蛛這個(gè)名稱的來因。
整個(gè)互聯(lián)網(wǎng)網(wǎng)站都是相互鏈接組成的,也就是說,搜索引擎蜘蛛從任何一個(gè)頁面出發(fā)最終都會爬完所有頁面。
當(dāng)然網(wǎng)站和頁面鏈接結(jié)構(gòu)太過于復(fù)雜,所以蜘蛛只有采用一定的方法才能夠爬完所有頁面,據(jù)億企邦了解最簡單的爬行策略有3種:
1、最佳優(yōu)先 最佳優(yōu)先搜索策略按照一定的網(wǎng)頁分析算法,預(yù)測候選URL與目標(biāo)網(wǎng)頁的相似度,或與主題的相關(guān)性,并選取評價(jià)最好的一個(gè)或幾個(gè)URL進(jìn)行抓取,它只訪問經(jīng)過網(wǎng)頁分析算法預(yù)測為“有用”的網(wǎng)頁。
存在的一個(gè)問題是,在爬蟲抓取路徑上的很多相關(guān)網(wǎng)頁可能被忽略,因?yàn)樽罴褍?yōu)先策略是一種局部最優(yōu)搜索算法,因此需要將最佳優(yōu)先結(jié)合具體的應(yīng)用進(jìn)行改進(jìn),以跳出局部最優(yōu)點(diǎn),據(jù)億企邦的研究發(fā)現(xiàn),這樣的閉環(huán)調(diào)整可以將無關(guān)網(wǎng)頁數(shù)量降低30%~90%。
2、深度優(yōu)先 深度優(yōu)先是指蜘蛛沿著發(fā)現(xiàn)的鏈接一直向前爬行,直到前面再也沒有其他鏈接,然后返回到第一個(gè)頁面,沿著另一個(gè)鏈接再一直往前爬行。
3、廣度優(yōu)先 廣度優(yōu)先是指蜘蛛在一個(gè)頁面發(fā)現(xiàn)多個(gè)鏈接時(shí),不是順著一個(gè)鏈接一直向前,而是把頁面上所有鏈接都爬一遍,然后再進(jìn)入第二層頁面沿著第二層上發(fā)現(xiàn)的鏈接爬向第三層頁面。
從理論上說,無論是深度優(yōu)先還是廣度優(yōu)先,只要給蜘蛛足夠的時(shí)間,都能爬完整個(gè)互聯(lián)網(wǎng)。
在實(shí)際工作中,蜘蛛的帶寬資源、時(shí)間都不是無限的,也不能爬完所有頁面,實(shí)際上最大的搜索引擎也只是爬行和收錄了互聯(lián)網(wǎng)的一小部分,當(dāng)然也并不是搜索引擎蜘蛛爬取的越多越好,這點(diǎn)我曾在億企邦的《抓取網(wǎng)站的搜索引擎蜘蛛是不是越多越好》一文中跟大家做過詳細(xì)的介紹。
因此,為了盡量多的抓取用戶信息,深度優(yōu)先和廣度優(yōu)先通常是混合使用的,這樣既可以照顧到盡量多的網(wǎng)站,也能照顧到一部分網(wǎng)站的內(nèi)頁。
三、搜索引擎蜘蛛工作中的信息收集 信息收集模塊包括“蜘蛛控制”和“網(wǎng)絡(luò)蜘蛛”兩部分,“蜘蛛”這個(gè)稱呼形象的描述出了信息收集模塊在網(wǎng)絡(luò)數(shù)據(jù)形成的“Web”上進(jìn)行信息獲取的功能。
總體而言,網(wǎng)絡(luò)蜘蛛從種子網(wǎng)頁出發(fā),通過反復(fù)下載網(wǎng)頁并從文檔中尋找未曾見過的URL,達(dá)到訪問其他網(wǎng)頁得以遍歷Web的目的。
而其工作策略一般則可以分為累積式抓?。╟umulative crawling)和增量式抓?。╥ncremental crawling)兩種。
1、累積式抓取 累積式抓取是指從某一個(gè)時(shí)間點(diǎn)開始,通過遍歷的方式抓取系統(tǒng)所能允許存儲和處理的所有網(wǎng)頁。在理想的軟硬件環(huán)境下,經(jīng)過足夠的運(yùn)行時(shí)間,累積式抓取的策略可以保證抓取到相當(dāng)規(guī)模的網(wǎng)頁集合。
但在億企邦看來由于Web數(shù)據(jù)的動(dòng)態(tài)特性,集合中網(wǎng)頁的被抓取時(shí)間點(diǎn)是不同的,頁面被更新的情況也不同,因此累積式抓取到的網(wǎng)頁集合事實(shí)上并無法與真實(shí)環(huán)境中的網(wǎng)絡(luò)數(shù)據(jù)保持一致。
2、增量式抓取 與累積式抓取不同,增量式抓取是指在具有一定量規(guī)模的網(wǎng)絡(luò)頁面集合的基礎(chǔ)上,采用更新數(shù)據(jù)的方式選取已有集合中的過時(shí)網(wǎng)頁進(jìn)行抓取,以保證所抓取到的數(shù)據(jù)與真實(shí)網(wǎng)絡(luò)數(shù)據(jù)足夠接近。
進(jìn)行增量式抓取的前提是,系統(tǒng)已經(jīng)抓取了足夠數(shù)量的網(wǎng)絡(luò)頁面,并具有這些頁面被抓取的時(shí)間信息。面向?qū)嶋H應(yīng)用環(huán)境的網(wǎng)絡(luò)蜘蛛設(shè)計(jì)中,通常既包括累積式抓取,也包括增量式抓取的策略。
累積式抓取一般用于數(shù)據(jù)集合的整體建立或大規(guī)模更新階段,而增量式抓取則主要針對數(shù)據(jù)集合的日常維護(hù)與即時(shí)更新。
在確定了抓取策略之后,如何從充分利用網(wǎng)絡(luò)帶寬,合理確定網(wǎng)頁數(shù)據(jù)更新的時(shí)間點(diǎn)就成了網(wǎng)絡(luò)蜘蛛運(yùn)行策略中的核心問題。
總體而言,在合理利用軟硬件資源進(jìn)行針對網(wǎng)絡(luò)數(shù)據(jù)的即時(shí)抓取方面,已經(jīng)形成了相對比較成熟的技術(shù)和實(shí)用性解決方案,億企邦覺得在這方面目前所需解決的主要問題是如何更好的處理動(dòng)態(tài)網(wǎng)絡(luò)數(shù)據(jù)問題(如數(shù)量越來越龐大的Web2.0數(shù)據(jù)等),以及更好的根據(jù)網(wǎng)頁質(zhì)量修正抓取策略的問題。
四、數(shù)據(jù)庫 為了避免重復(fù)爬行和抓取網(wǎng)址,搜索引擎會建立一個(gè)數(shù)據(jù)庫,記錄已被發(fā)現(xiàn)還沒有抓取的頁面和已經(jīng)被抓取的頁面,那么數(shù)據(jù)庫中的URL是怎么來的呢?
1、人工錄入種子網(wǎng)站 這個(gè)簡單的來說,就是我們建好一個(gè)新站后,向百度、Google或360提交的網(wǎng)址收錄。
2、蜘蛛抓取頁面 如果搜索引擎蜘蛛在爬取的過程中,發(fā)現(xiàn)了新連接URL,數(shù)據(jù)庫中沒有,就會存入待訪問數(shù)據(jù)庫(網(wǎng)站觀察期)。
蜘蛛按重要性從待訪問數(shù)據(jù)庫中提取URL,訪問并抓取頁面,然后把這個(gè)URL從待訪問地址庫中刪除,放進(jìn)已訪問地址庫中,所以億企邦建議各位站長在網(wǎng)站觀察期的時(shí)候盡量有規(guī)律的更新網(wǎng)站是必要的。
3、站長提交網(wǎng)站 一般來說,提交網(wǎng)站只是把網(wǎng)站存入待訪問數(shù)據(jù)庫,如果網(wǎng)站持久不更新蜘蛛也不會光顧,搜索引擎收錄的頁面都是蜘蛛自己追蹤鏈接得到的。
所以你提交給搜索引擎其實(shí)用處不大,還是要根據(jù)后期你網(wǎng)站更新程度來考慮,搜索引擎更喜歡自己沿著鏈接發(fā)現(xiàn)新頁面,當(dāng)然如果說你的SEO技術(shù)夠老練,并且有這能力,可以試一下,說不定會有意想不到的效果,不過,對于一般在站長來說,億企邦還是建議讓蜘蛛自然的爬行和抓取到新站頁面。
五、吸引蜘蛛 雖然理論上說蜘蛛可以爬行和抓取所有頁面,但實(shí)際上是不可能完成的,那么SEO人員想要收錄更多的頁面就只有想辦法引誘蜘蛛抓取。
既然抓不了所有頁面,那么我們就要讓它抓取重要頁面,因?yàn)橹匾撁嬖谒饕衅鸬街匾獩Q定,直接影響排名的因素,哪么那些頁面算是比較重要的呢?對此,億企邦也特意整理了以下幾個(gè)我認(rèn)為比較重要頁面,具體有這么幾個(gè)特點(diǎn):
1、網(wǎng)站和頁面權(quán)重 質(zhì)量高、年齡老的網(wǎng)站被給予很高的權(quán)重,這種網(wǎng)站上的頁面蜘蛛爬行的深度比較高,所以會有更多的內(nèi)頁被收錄。
2、頁面更新度 蜘蛛每次爬行都會把頁面數(shù)據(jù)儲存起來,如果第二次爬行時(shí)發(fā)現(xiàn)此頁面與第一次收錄的內(nèi)容完全一樣,說明頁面沒有更新,蜘蛛也沒必要經(jīng)常再來爬行和抓取。
如果頁面內(nèi)容經(jīng)常更新,蜘蛛就會頻繁的爬行和抓取,那么,頁面上的新鏈接自然的會被蜘蛛更快的追蹤和抓取,這也就是為什么需要每天更新文章(具體可查看億企邦的《百度收錄網(wǎng)站文章的現(xiàn)狀及原則依據(jù)》相關(guān)介紹)。
3、導(dǎo)入鏈接 無論是外部鏈接還是同一個(gè)網(wǎng)站的內(nèi)部鏈接,要被蜘蛛抓取,就必須有導(dǎo)入鏈接進(jìn)入頁面,否則蜘蛛根本不知道頁面的存在。此時(shí)的URL鏈接起著非常重要的作用,內(nèi)鏈的重要性發(fā)揮出來了。
另外,億企邦覺得高質(zhì)量的導(dǎo)入鏈接也經(jīng)常使頁面上的導(dǎo)出鏈接被爬行的深度增加。
這也就是為什么大多數(shù)站長或SEO都要高質(zhì)量友情鏈接,因?yàn)橹┲霃膶Ψ骄W(wǎng)站爬行到你網(wǎng)站之次數(shù)多,深度也高。
4、與首頁點(diǎn)擊距離 一般來說網(wǎng)站首頁權(quán)重最高,大部分外部鏈接都指向首頁,蜘蛛訪問最頻繁的也是首頁,離首頁點(diǎn)擊距離越近,頁面權(quán)重越高,被蜘蛛爬行的機(jī)會也就越大。
這也就是為什么要求網(wǎng)站框架建設(shè)點(diǎn)擊三次就能查看完整個(gè)網(wǎng)站的意思。
六、蜘蛛爬行時(shí)的復(fù)制內(nèi)容檢測 一般都知道在搜索引擎索引環(huán)節(jié)中中會進(jìn)行去重處理,其實(shí)在蜘蛛爬行的時(shí)候已經(jīng)在進(jìn)行檢測,當(dāng)蜘蛛爬行和抓取文件時(shí)會進(jìn)行一定程度的復(fù)制內(nèi)容檢測,遇到權(quán)重低的網(wǎng)站上大量轉(zhuǎn)載或抄襲內(nèi)容時(shí),很可能不再繼續(xù)爬行。
所以對于新站來說切莫采集和抄襲,這也就是為什么很多站長查看日志的時(shí)候發(fā)現(xiàn)了蜘蛛,但是頁面從來沒有被抓取的原因,因?yàn)榕佬邪l(fā)現(xiàn)是重復(fù)內(nèi)容那么它講放棄抓取也就只停留在爬行過的階段。
億企邦點(diǎn)評: 雖說蜘蛛的作用就是讓搜索引擎對有效鏈接進(jìn)行搜尋,但并不意味著蜘蛛越多越好,有時(shí)過多的蜘蛛來網(wǎng)站抓取會造成一定的負(fù)面效果,會影響服務(wù)器的運(yùn)行,導(dǎo)致網(wǎng)頁打開緩慢。