互聯(lián)網(wǎng)信息爆發(fā)式增長,如何有效的獲取并利用這些信息是搜索引擎工作中的首要環(huán)節(jié)。數(shù)據(jù)抓取系統(tǒng)作為整個搜索系統(tǒng)中的上游,主要負責互聯(lián)網(wǎng)信息的搜集、保存、更新環(huán)節(jié),它像蜘蛛一樣在網(wǎng)絡間爬來爬去,因此通常會被叫做“spider”。例如我們常用的幾家通用搜索引擎蜘蛛被叫做:Baiduspdier、Googlebot、Sogou Web Spider等。
Spider抓取系統(tǒng)是搜索引擎數(shù)據(jù)來源的重要保證,如果把web理解為一個有向圖,那么spider的工作過程可以認為是對這個有向圖的遍歷。從一些重要的種子 URL開始,通過頁面上的超鏈接關(guān)系,不斷的發(fā)現(xiàn)新URL并抓取,盡最大可能抓取到更多的有價值網(wǎng)頁。對于類似百度這樣的大型spider系統(tǒng),因為每時 每刻都存在網(wǎng)頁被修改、刪除或出現(xiàn)新的超鏈接的可能,因此,還要對spider過去抓取過的頁面保持更新,維護一個URL庫和頁面庫。
1、spider抓取系統(tǒng)的基本框架
如下為spider抓取系統(tǒng)的基本框架圖,其中包括鏈接存儲系統(tǒng)、鏈接選取系統(tǒng)、dns解析服務系統(tǒng)、抓取調(diào)度系統(tǒng)、網(wǎng)頁分析系統(tǒng)、鏈接提取系統(tǒng)、鏈接分析系統(tǒng)、網(wǎng)頁存儲系統(tǒng)。
2、spider抓取過程中涉及的網(wǎng)絡協(xié)議
搜索引擎與資源提供者之間存在相互依賴的關(guān)系,其中搜索引擎需要站長為其提供資源,否則搜索引擎就無法滿足用戶檢索需求;而站長需要通過搜索引擎將自己的 內(nèi)容推廣出去獲取更多的受眾。spider抓取系統(tǒng)直接涉及互聯(lián)網(wǎng)資源提供者的利益,為了使搜素引擎與站長能夠達到雙贏,在抓取過程中雙方必須遵守一定的 規(guī)范,以便于雙方的數(shù)據(jù)處理及對接。這種過程中遵守的規(guī)范也就是日常中我們所說的一些網(wǎng)絡協(xié)議。以下簡單列舉:
http協(xié)議:超文本傳輸協(xié)議,是互聯(lián)網(wǎng)上應用最為廣泛的一種網(wǎng)絡協(xié)議,客戶端和服務器端請求和應答的標準?蛻舳艘话闱闆r是指終端用戶,服務器端即指網(wǎng) 站。終端用戶通過瀏覽器、蜘蛛等向服務器指定端口發(fā)送http請求。發(fā)送http請求會返回對應的httpheader信息,可以看到包括是否成功、服務 器類型、網(wǎng)頁最近更新時間等內(nèi)容。
https協(xié)議:實際是加密版http,一種更加安全的數(shù)據(jù)傳輸協(xié)議。
UA屬性:UA即user-agent,是http協(xié)議中的一個屬性,代表了終端的身份,向服務器端表明我是誰來干嘛,進而服務器端可以根據(jù)不同的身份來做出不同的反饋結(jié)果。
robots協(xié)議:robots.txt是搜索引擎訪問一個網(wǎng)站時要訪問的第一個文件,用以來確定哪些是被允許抓取的哪些是被禁止抓取的。 robots.txt必須放在網(wǎng)站根目錄下,且文件名要小寫。詳細的robots.txt寫法可參考 http://www.robotstxt.org 。百度嚴格按照robots協(xié)議執(zhí)行,另外,同樣支持網(wǎng)頁內(nèi)容中添加的名為robots的meta標 簽,index、follow、nofollow等指令。
3、spider抓取的基本過程
spider的基本抓取過程可以理解為如下的流程圖: