網(wǎng)絡(luò)蜘蛛即Web Spider,是一個很形象的名字。把互聯(lián)網(wǎng)比喻成一個蜘蛛網(wǎng),那么Spider就是在網(wǎng)上爬來爬去的蜘蛛。網(wǎng)絡(luò)蜘蛛是通過網(wǎng)頁的鏈接地址來尋找網(wǎng)頁,從 網(wǎng)站某一個頁面(通常是首頁)開始,讀取網(wǎng)頁的內(nèi)容,找到在網(wǎng)頁中的其它鏈接地址,然后通過這些鏈接地址尋找下一個網(wǎng)頁,這樣一直循環(huán)下去,直到把這個網(wǎng) 站所有的網(wǎng)頁都抓取完為止。如果把整個互聯(lián)網(wǎng)當(dāng)成一個網(wǎng)站,那么網(wǎng)絡(luò)蜘蛛就可以用這個原理把互聯(lián)網(wǎng)上所有的網(wǎng)頁都抓取下來。
對于搜索引擎來說,要抓取互聯(lián)網(wǎng)上所有的網(wǎng)頁幾乎是不可能的,從目前公布的數(shù)據(jù)來看,容量最大的搜索引擎也不過是抓取了整個網(wǎng)頁數(shù)量的百分之四十左右。這 其中的原因一方面是抓取技術(shù)的瓶頸,無法遍歷所有的網(wǎng)頁,有許多網(wǎng)頁無法從其它網(wǎng)頁的鏈接中找到;另一個原因是存儲技術(shù)和處理技術(shù)的問題,如果按照每個頁 面的平均大小為20K計算(包含圖片),100億網(wǎng)頁的容量是100×2000G字節(jié),即使能夠存儲,下載也存在問題(按照一臺機(jī)器每秒下載20K計算, 需要340臺機(jī)器不停的下載一年時間,才能把所有網(wǎng)頁下載完畢)。同時,由于數(shù)據(jù)量太大,在提供搜索時也會有效率方面的影響。因此,許多搜索引擎的網(wǎng)絡(luò)蜘 蛛只是抓取那些重要的網(wǎng)頁,而在抓取的時候評價重要性主要的依據(jù)是某個網(wǎng)頁的鏈接深度。
在抓取網(wǎng)頁的時候,網(wǎng)絡(luò)蜘蛛一般有兩種策略:廣度優(yōu)先和深度優(yōu)先(如下圖所示)。
廣度優(yōu)先是指網(wǎng)絡(luò)蜘蛛會先抓取起始網(wǎng)頁中鏈接的所有網(wǎng)頁,然后再選擇其中 的一個鏈接網(wǎng)頁,繼續(xù)抓取在此網(wǎng)頁中鏈接的所有網(wǎng)頁。這是最常用的方式,因為這個方法可以讓網(wǎng)絡(luò)蜘蛛并行處理,提高其抓取速度。深度優(yōu)先是指網(wǎng)絡(luò)蜘蛛會從 起始頁開始,一個鏈接一個鏈接跟蹤下去,處理完這條線路之后再轉(zhuǎn)入下一個起始頁,繼續(xù)跟蹤鏈接。這個方法有個優(yōu)點是網(wǎng)絡(luò)蜘蛛在設(shè)計的時候比較容易。兩種策 略的區(qū)別,下圖的說明會更加明確。
由于不可能抓取所有的網(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è)計者來說,扁平化的網(wǎng)站結(jié)構(gòu)設(shè)計有助于搜索引擎抓取其更多的網(wǎng)頁。
網(wǎng)絡(luò)蜘蛛在訪問網(wǎng)站網(wǎng)頁的時候,經(jīng)常會遇到加密數(shù)據(jù)和網(wǎng)頁權(quán)限的問題,有些網(wǎng)頁是需要會員權(quán)限才能訪問。當(dāng)然,網(wǎng)站的所有者可以通過協(xié)議讓網(wǎng)絡(luò)蜘蛛不去抓 ?。ㄏ滦」?jié)會介紹),但對于一些出售報告的網(wǎng)站,他們希望搜索引擎能搜索到他們的報告,但又不能完全免費的讓搜索者查看,這樣就需要給網(wǎng)絡(luò)蜘蛛提供相應(yīng)的 用戶名和密碼。網(wǎng)絡(luò)蜘蛛可以通過所給的權(quán)限對這些網(wǎng)頁進(jìn)行網(wǎng)頁抓取,從而提供搜索。而當(dāng)搜索者點擊查看該網(wǎng)頁的時候,同樣需要搜索者提供相應(yīng)的權(quán)限驗證。