隨著搜索經濟的崛起,人們開始越加關注全球各大搜索引擎的性能、技術和日流量。作為企業,會根據搜索引擎的知名度以及日流量來選擇是否要投放廣告等;作為普通網民,會根據搜索引擎的性能和技術來選擇自己喜歡的引擎查找資料;作為學者,會把有代表性的搜索引擎作為研究對象……
而作為一個網站的經營者,其更關心的或許是如何通過網絡載體讓更多的網民知道自己的網站,進而獲得更高的流量和知名度。這其中,搜索引擎已經成了一個重要的且是免費的宣傳途徑。一方面,搜索引擎會主動出擊,尋找網絡上的各種網頁數據,並在後台按相關條件進行索引;另一方面,各大網站為了能讓自己的內容更多的通過搜索引擎向網民展示,都開始對網站結構進行重大調整,其中包括扁平化結構設計、動態(網頁)轉靜態(網頁)、Sitemap等。
這些看來不經意的舉動都讓我們切身感受到搜索引擎對我們網絡使用方式的改變起到了重要作用。並且,正因為搜索引擎的興起以及社會各界對其重視程度日漸高漲,還由此創造了一個全新的職位——SEO。實際上,搜索引擎經濟的崛起,又一次向人們證明了網絡所蘊藏的巨大商機。網絡離開了搜索將只剩下空洞雜亂的數據,以及大量等待去費力挖掘的金礦。
搜索引擎一直專注於提升用戶的體驗度,其用戶體驗度則反映在三個方面: 准、全、快 。用專業術語講是:查准率、查全率和搜索速度(即搜索耗時)。其中最易達到的是搜索速度,因為對於搜索耗時在1秒以下的系統來說,訪問者很難辨別其快慢了,更何況還有網絡速度的影響。因此,對搜索引擎的評價就集中在了前兩者:准、全。中文搜索引擎的“准”,需要保證搜索的前幾十條結果都和搜索詞十分相關,這需由“ 分詞技術 ”和“ 排序技術 ”來決定;中文搜索引擎的“全”則需保證不遺漏某些重要的結果,而且能找到最新的網頁,這需要搜索引擎有一個強大的網頁收集器,一般稱為“網絡蜘蛛”,也有叫“網頁機器人”。
研究搜索引擎技術的文章不少,但大部分討論的是如何評價網頁的重要性,對於網絡蜘蛛研究的文章不多。網絡蜘蛛技術並不是一項十分高深的技術,但要做一個強大的網絡蜘蛛,卻非易事。在目前磁盤容量已經不是瓶頸的時候,搜索引擎一直在擴大自己的網頁數量。最大的搜索引擎Google( http://www.google.com )從2002年的10億網頁增加到現在近40億網頁;最近雅虎搜索引擎( http://search.yahoo.com/ )號稱收錄了45億個網頁;國內的中文搜索引擎百度( http://www.baidu.com )的中文頁面從兩年前的七千萬頁增加到了現在的兩億多。據估計,整個互聯網的網頁數達到100多億,而且每年還在快速增長。因此一個優秀的搜索引擎,需要不斷的優化網絡蜘蛛的算法,提升其性能。
或許有些人有疑問,為何搜索引擎需要用網絡蜘蛛抓取網站所有的網頁,為什麼不在搜索者輸入關鍵詞後只把那些需要的結果抓取過來?這實際上是效率問題,搜索引擎不可能在搜索時實時去檢查每個網頁,而是需要把網頁先抓取下來,按照關鍵詞建立好索引,每次搜索的結果都會直接從搜索引擎建立好索引的數據庫中查找,然後把結果返回給訪問者。 關於搜索引擎系統架構方面的知識, 本文主要介紹網絡蜘蛛的相關技術。
網絡蜘蛛即Web Spider,是一個很形象的名字。把互聯網比喻成一個蜘蛛網,那麼Spider就是在網上爬來爬去的蜘蛛。網絡蜘蛛是通過網頁的鏈接地址來尋找網頁,從網站某一個頁面(通常是首頁)開始,讀取網頁的內容,找到在網頁中的其它鏈接地址,然後通過這些鏈接地址尋找下一個網頁,這樣一直循環下去,直到把這個網站所有的網頁都抓取完為止。如果把整個互聯網當成一個網站,那麼網絡蜘蛛就可以用這個原理把互聯網上所有的網頁都抓取下來。
對於搜索引擎來說,要抓取互聯網上所有的網頁幾乎是不可能的,從目前公布的數據來看,容量最大的搜索引擎也不過是抓取了整個網頁數量的百分之四十左右。這其中的原因一方面是抓取技術的瓶頸,無法遍歷所有的網頁,有許多網頁無法從其它網頁的鏈接中找到;另一個原因是存儲技術和處理技術的問題,如果按照每個頁面的平均大小為20K計算(包含圖片),100億網頁的容量是100×2000G字節,即使能夠存儲,下載也存在問題(按照一台機器每秒下載20K計算,需要340台機器不停的下載一年時間,