搜索引擎的工作的過程非常復雜,而簡單的講搜索引擎的工過程大體可以分成三個階段。爬行和抓取:搜索引擎蜘蛛通過跟蹤鏈接訪問頁面,獲取頁面HTML代碼存入數據庫。預處理:搜索贏球對抓取來的頁面數據文字進行文字提取、中文分詞、索引等處理,以備排名程序調用。排名:用戶輸入關鍵字後,排名調用索引庫數據,計算相關性,然後按一定格式生成搜索結果頁面。
爬行和抓取
爬行和抓取是搜索引擎工作的第一步,完成數據收集任務。
蜘蛛
搜索引擎用來爬行和訪問頁面的程序被稱為蜘蛛(spider),也稱為機器人(bot)。
蜘蛛代理名稱:
百度蜘蛛:Baiduspider+(+http://www.baidu.com/search/spider.htm) ·
雅虎中國蜘蛛:Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html) ·
英文雅虎蜘蛛:Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)
Google 蜘蛛:Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) ·
微軟 Bing 蜘蛛:msnbot/1.1 (+http://search.msn.com/msnbot.htm)·
搜狗蜘蛛: Sogou+web+robot+(+http://www.sogou.com/docs/help/webmasters.htm#07) ·
搜搜蜘蛛:Sosospider+(+http://help.soso.com/webspider.htm) ·
有道蜘蛛:Mozilla/5.0 (compatible; YodaoBot/1.0; http://www.yodao.com/help/webmaster/spider/; )
跟蹤鏈接
為了抓取網上盡量多的頁面,搜索引擎蜘蛛會跟蹤頁面上的鏈接,從一個頁面爬到下一個頁面,就好像蜘蛛在蜘蛛網上爬行那樣,這也就是搜索引擎蜘蛛這個名稱的由來。最簡單的爬行遍歷策略分為兩種,一是深度優先,二是廣度優先。
深度優先搜索
深度優先搜索就是在搜索樹的每一層始終先只擴展一個子節點,不斷地向縱深前進直到不能再前進(到達葉子節點或受到深度限制)時,才從當前節點返回到上一級節點,沿另一方向又繼續前進。這種方法的搜索樹是從樹根開始一枝一枝逐漸形成的。
深度優先搜索亦稱為縱向搜索。由於一個有解的問題樹可能含有無窮分枝,深度優先搜索如果誤入無窮分枝(即深度無限),則不可能找到目標節點。所以,深度優先搜索策略是不完備的。另外,應用此策略得到的解不一定是最佳解(最短路徑)。
廣度優先搜索
在深度優先搜索算法中,是深度越大的結點越先得到擴展。如果在搜索中把算法改為按結點的層次進行搜索, 本層的結點沒有搜索處理完時,不能對下層結點進行處理,即深度越小的結點越先得到擴展,也就是說先產生 的結點先得以擴展處理,這種搜索算法稱為廣度優先搜索法。
在深度優先搜索算法中,是深度越大的結點越先得到擴展。如果在搜索中把算法改為按結點的層次進行搜索, 本層的結點沒有搜索處理完時,不能對下層結點進行處理,即深度越小的結點越先得到擴展,也就是說先產生 的結點先得以擴展處理,這種搜索算法稱為廣度優先搜索法。
吸引蜘蛛
哪些頁面被認為比較重要呢?有幾方面影響因素:
· 網站和頁面權重。質量高、資格老的網站被認為權重比較高,這種網站上的頁面被爬行的深度也會比較高,所以會有更多內頁被收錄。
· 頁面更新度。蜘蛛每次爬行都會把頁面數據存儲起來。如果第二次爬行發現頁面與第一次收錄的完全一樣,說明頁面沒有更新,蜘蛛也就沒有必要經常抓取。如果頁面內容經常更新,蜘蛛就會更加頻繁地訪問這種頁面,頁面上出現的新鏈接,也自然會被蜘蛛更快跟蹤,抓取新頁面。
· 導入鏈接。無論是外部鏈接還是同一個網站的內部鏈接,要被蜘蛛抓取就必須有導入鏈接進入頁面,否則蜘蛛根本沒有機會知道頁面的存在。高質量的導入鏈接也經常使頁面上的導出鏈接被爬行深度增加。一般來說網站上權重最高的是首頁,大部分外部鏈接是指向首頁,蜘蛛訪問最頻繁的也是首頁。離首頁點擊距離越近,頁面權重越高,被蜘蛛爬行的機會也越大。
地址庫
為了避免重復爬行和抓取網址,搜索引擎會建立一個地址庫,記錄已經被發現還沒有抓取的頁面,以及已經被抓取的頁面。地址庫中的uRL有幾個來源:
(1)人工錄入的種子網站。
(2)蜘蛛抓取頁面後,從HTML中解析出新的鏈接uRL,與地址庫中的數據進行對比,如果是地址庫中沒有的網址,就存入待訪問地址庫。
(3)站長通過搜索引擎網頁提交表格提交進來的網址。
蜘蛛按重要性從待訪問地址庫中提取uRL,訪問並抓取頁面,然後把這個uRL從待訪問地址庫中刪除,放進已訪問地址庫中。
大部分主流搜索引擎都提供一個表格,讓站長提交網址。不過這些提交來的網址都只是存入地址庫而已,是否收錄還要看頁面重要性如何。搜索引擎所收錄的絕大部分頁面是蜘蛛自己跟蹤鏈接得到的。可以說提交頁面基本t是毫無用處的,搜索引擎更喜歡自己沿著鏈接發現新頁面。
文件存儲搜索引擎蜘蛛抓取的數據存入原始頁面數據庫。其中的頁面數據與用戶浏覽器得到的HTML是完全一樣的。每個uRI,都有