時間:2015年03月16日 分類:推薦論文 次數:
【摘要】 網絡蜘蛛搜索策略的研究是近年來專業搜索引擎研究的焦點之一,如何使搜索引擎快速準確地從龐大的網頁數據中獲取所需資源的需求是目前所面臨的重要問題。本文重點闡述了搜索引擎的 Web Spider (網絡蜘蛛)的搜索策略和搜索優化措施, 提出了一種簡單的基于廣度優先算法的網絡蜘蛛設計方案,并分析了設計過程中的優化措施。
【關鍵詞】 中國期刊之家,搜索引擎,網絡蜘蛛,搜索策略
0 引言
近年來,隨著 Internet 技術的廣泛應用,傳統的 通用搜索引擎,如 Google、Fast、Alta Vista 和 GoTo 等正面臨巨大的挑戰。挑戰之一是 Web 信息資源呈 指數級增長,搜索引擎無法索引所有頁面。據統計, 目前 Web 上靜態頁面的數量超過 40 億個,而且這 一數量還在以平均每天 730 萬個頁面的速度遞增。 在過去的幾年中,盡管各種通用搜索引擎在索引技 術、索引數量上有所提高,但遠遠無法跟上 Web 本 身的增長速度,即使是目前全球最大的搜索引擎 Google,其索引的頁面數量僅占 Web 總量的 40%; 挑戰之二是 Web 信息資源的動態變化,搜索引擎無 法保證對信息的及時更新。近年來的研究表明,Web 上的頁面平均 50 天就有約 50%的頁面發生變化, 而目前通用搜索引擎更新的時間至少需要數星期之 久;挑戰之三是傳統的搜索引擎提供的信息檢索服務,不能滿足人們日益增長的對個性化服務的需要。因此如何設計網絡蜘蛛(Web Spider)來更有效率的爬 取互聯網上的內容成為搜索引擎的一個首要問題。 在設計網絡蜘蛛時,不僅需要充分考慮到爬取的效率和站點設置的靈活性還要確保系統的穩定性。一 個優秀的搜索引擎, 需要不斷的優化網絡蜘蛛的算 法, 提升其性能。本文在分析網絡蜘蛛的工作原理 的基礎上, 提出了一種基于廣度優先搜索算法的網 絡蜘蛛的實現,并對提高網絡蜘蛛搜索效率的相關看法。
由于不可能抓取所有的網頁,有些網絡蜘蛛對一些不太重要的網站,設置了訪問的層數。[2]例如, 在上圖中,A 為起始網頁,屬于 0 層,B、C、D、 E、F 屬于第 1 層,G、H 屬于第 2 層,I 屬于第 3 層。如果網絡蜘蛛設置的訪問層數為 2 的話,網頁I 是不會被訪問到的。這也讓有些網站上一部分網 頁能夠在搜索引擎上搜索到,另外一部分不能被搜索到。 對于網站設計者來說,扁平化的網站結構設計有助于搜索引擎抓取其更多的網頁。 網絡蜘蛛在訪問網站網頁的時候,經常會遇到加密數據和網頁權限的問題,有些網頁是需要會員 權限才能訪問。當然,網站的所有者可以通過協議 讓網絡蜘蛛不去抓取(下小節會介紹),但對于一些出售報告的網站,他們希望搜索引擎能搜索到他 們的報告,但又不能完全免費的讓搜索者查看,這樣就需要給網絡蜘蛛提供相應的用戶名和密碼。網 絡蜘蛛可以通過所給的權限對這些網頁進行網頁抓取,從而提供搜索。而當搜索者點擊查看該網頁的 時候,同樣需要搜索者提供相應的權限驗證。
2 網絡蜘蛛的設計
根據抓取過程,蜘蛛主要分為三個功能模塊, 一個是網頁讀取模塊主要是用來讀取遠程 Web 服 務器上的網頁內容,另一個是超鏈分析模塊,這個 模塊主要是分析網頁中的超鏈接,將網頁上的所有 超鏈接提取出來,放入到待抓取 URL 列表中,再一 個模塊就是內容分析模塊,這個模塊主要是對網頁 內容進行分析,將網頁中所有超標志去掉只留下網 頁文字內容。蜘蛛的主要工作流程如圖所示。
首先蜘蛛讀取抓取站點的 URL 列表,取出一個 站點 URL,將其放入未訪問的 URL 列表(UVURL 列表)中,如果 UVURL 不為空剛從中取出一個 URL 判斷是否已經訪問過,若沒有訪問過則讀取此網頁, 并進行超鏈分析及內容分析,并將些頁存入文檔數 據庫,并將些 URL 放入已訪問 URL 列表(VURL 列表),直到 UVRL 為空為止,此時再抓取其他站 點,依次循環直到所有的站點 URL 列表都抓取完為 止。
為了提高網絡蜘蛛的抓取效率,需要引入以下 技術。
(1)、 多線程技術:由于抓取的站點 URL 相當多,采用單線程蜘蛛抓取時速度不夠,也不能滿足實 際的需要。因而需要多線程技術來創建多個蜘蛛線程來同時抓取,以提高速度。
(2)、 網頁抓取:網頁抓取是基于 HTTP 協議之上的, 網頁上的資源有多種,有網頁,有 Word 文檔也 有其他類型的文件,這樣抓取時需要判斷 URL 所指向資源的類型。
(3)、 超鏈分析:超鏈分析是一個比較重要的環節,需要對 HTML 的各種標志(tag)有一個很全面 的了解。需要反復測試,考慮各種情形的發生。
超鏈分析時從網頁里提取出來的是相對于當前 頁的相對 URL,因而需要根據當前頁的絕對 URL 將提取的這個 URL 轉換成絕對 URL。在 此過程中需要根據 ParentURL(就是當前頁的 URL)作出各種判斷。
3 改進方法
商業化的蜘蛛需要抓取上億的網頁,因而抓取 速度是一個關鍵,另外蜘蛛需要自動運行,盡是減 少人工的參與,因而系統的性能也是一個很重要的 關鍵,系統能夠在發生異常的時候自動進行處理, 防止程序的退出和死機。[3]有一些細節需要注意:
系統應該使用多線程,使用多個蜘蛛同時抓取,在可能的情況下,最好是做成 分布式的蜘蛛程序,蜘蛛應該分布地網 絡上多臺服務器上協同抓取網頁,這樣 速度會更快,更符合我們的實際應用。
對于同一網站的網頁應該采用同一個 HttpConnection 這樣有效地節省創建一 個連接的時間,另外對于抓取的 URL 采用域名緩沖機制(可在網關一級上實 現),這樣抓取時減少由域名到 IP 地 址的轉換時間以及重復的域名轉換。若 能做到這一步將會大大減少抓取時間, 因為訪問一 URL 時每次都要進行域名 到主機 IP 地址的轉換。
最好是能夠將讀取網頁、超鏈分析及網 頁內容分析三部分分開來做,讓它們并 行協同工作,這樣效率會更高。因為在這三個過程中網頁讀取比起其他兩個 功能來說是一個長任務,最耗時間。當抓取完一網頁后,在抓取下一網頁的時候讓去執行超鏈分析和內容分析。這樣 在下一網頁抓取完成之前超鏈分析和 內容分析任務就能完成,抓取任務不會 延遲,這樣節省了一些時間。
4 結束語
隨著人們對“個性化”信息服務需要的日益增 長,專業搜索引擎的發展將成為搜索引擎發展的主 要趨勢之一。[4]網絡蜘蛛搜索策略問題的研究,對專業搜索引擎的應用與發展具有重要意義。本文對 現有的網絡蜘蛛搜索策略進行了簡單的介紹和分 析,提出了一種基于廣度優先搜索網絡蜘蛛設計方案。提出了提高網絡蜘蛛效率的幾種方法。目前的 網絡蜘蛛通常采用“固定的”搜索策略,缺乏適應性,如何提高網絡蜘蛛的自適應性有待進一步研究。 總之,網絡蜘蛛搜索策略問題的研究還處于發展階 段,無論是模型、搜索算法,還是實驗方法都還有許多有待解決的問題。