一、什么是網絡爬蟲
網絡爬蟲是一個自動提取網頁的程序,它為搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。
網絡爬蟲流程
二、爬蟲的分類:
1、通用網絡爬蟲:通用網絡爬蟲又稱全網爬蟲(Scalable Web Crawler),爬行對象從一些種子 URL 擴充到整個 Web,主要為門戶站點搜索引擎和大型 Web 服務提供商采集數據。 由于商業(yè)原因,它們的技術細節(jié)很少公布出來。 這類網絡爬蟲的爬行范圍和數量巨大,對于爬行速度和存儲空間要求較高,對于爬行頁面的順序要求相對較低,同時由于待刷新的頁面太多,通常采用并行工作方式,但需要較長時間才能刷新一次頁面。 雖然存在一定缺陷,通用網絡爬蟲適用于為搜索引擎搜索廣泛的主題,有較強的應用價值。
2、聚焦網絡爬蟲:聚焦網絡爬蟲(Focused Crawler),又稱主題網絡爬蟲(Topical Crawler),是指選擇性地爬行那些與預先定義好的主題相關頁面的網絡爬蟲[8]。 和通用網絡爬蟲相比,聚焦爬蟲只需要爬行與主題相關的頁面,極大地節(jié)省了硬件和網絡資源,保存的頁面也由于數量少而更新快,還可以很好地滿足一些特定人群對特定領域信息的需求。
3、增量式網絡爬蟲:增量式網絡爬蟲(Incremental Web Crawler)是 指 對 已 下 載 網 頁 采 取 增 量式更新和只爬行新產生的或者已經發(fā)生變化網頁的爬蟲,它能夠在一定程度上保證所爬行的頁面是盡可能新的頁面。 和周期性爬行和刷新頁面的網絡爬蟲相比,增量式爬蟲只會在需要的時候爬行新產生或發(fā)生更新的頁面 ,并不重新下載沒有發(fā)生變化的頁面,可有效減少數據下載量,及時更新已爬行的網頁,減小時間和空間上的耗費,但是增加了爬行算法的復雜度和實現難度。增量式網絡爬蟲的體系結構[包含爬行模塊、排序模塊、更新模塊、本地頁面集、待爬行 URL 集以及本地頁面URL 集。
4、Deep Web 爬蟲:Web 頁面按存在方式可以分為表層網頁(Surface Web)和深層網頁(Deep Web,也稱 Invisible Web Pages 或 Hidden Web)。 表層網頁是指傳統搜索引擎可以索引的頁面,以超鏈接可以到達的靜態(tài)網頁為主構成的 Web 頁面。Deep Web 是那些大部分內容不能通過靜態(tài)鏈接獲取的、隱藏在搜索表單后的,只有用戶提交一些關鍵詞才能獲得的 Web 頁面。例如那些用戶注冊后內容才可見的網頁就屬于 Deep Web。 2000 年 Bright Planet 指出:Deep Web 中可訪問信息容量是 Surface Web 的幾百倍,是互聯網上最大、發(fā)展最快的新型信息資源。
網絡爬蟲的分類
三、爬蟲抓取目標分類:基于目標網頁特征的爬蟲所抓取、存儲并索引的對象一般為網站或網頁。根據種子樣本獲取方式可分為:
1、基于目標網頁特征:
1.1、預先給定的初始抓取種子樣本;
1.2、預先給定的網頁分類目錄和與分類目錄對應的種子樣本,如Yahoo!分類結構等;
1.3、通過用戶行為確定的抓取目標樣例,分為:
Ⅰ、用戶瀏覽過程中顯示標注的抓取樣本;
Ⅱ、通過用戶日志挖掘得到訪問模式及相關樣本。
其中,網頁特征可以是網頁的內容特征,也可以是網頁的鏈接結構特征,等等。
2、基于目標數據模式:基于目標數據模式的爬蟲針對的是網頁上的數據,所抓取的數據一般要符合一定的模式,或者可以轉化或映射為目標數據模式。
3、基于領域概念:另一種描述方式是建立目標領域的本體或詞典,用于從語義角度分析不同特征在某一主題中的重要程度。
爬蟲網頁搜索策略
四、網頁搜索策略:
網頁的抓取策略可以分為深度優(yōu)先、廣度優(yōu)先和最佳優(yōu)先三種。深度優(yōu)先在很多情況下會導致爬蟲的陷入(trapped)問題,目前常見的是廣度優(yōu)先和最佳優(yōu)先方法。
1、廣度優(yōu)先搜索
廣度優(yōu)先搜索策略是指在抓取過程中,在完成當前層次的搜索后,才進行下一層次的搜索。該算法的設計和實現相對簡單。在目前為覆蓋盡可能多的網頁,一般使用廣度優(yōu)先搜索方法。也有很多研究將廣度優(yōu)先搜索策略應用于聚焦爬蟲中。其基本思想是認為與初始URL在一定鏈接距離內的網頁具有主題相關性的概率很大。另外一種方法是將廣度優(yōu)先搜索與網頁過濾技術結合使用,先用廣度優(yōu)先策略抓取網頁,再將其中無關的網頁過濾掉。這些方法的缺點在于,隨著抓取網頁的增多,大量的無關網頁將被下載并過濾,算法的效率將變低。
2、最佳優(yōu)先搜索
最佳優(yōu)先搜索策略按照一定的網頁分析算法,預測候選URL與目標網頁的相似度,或與主題的相關性,并選取評價最好的一個或幾個URL進行抓取。它只訪問經過網頁分析算法預測為“有用”的網頁。存在的一個問題是,在爬蟲抓取路徑上的很多相關網頁可能被忽略,因為最佳優(yōu)先策略是一種局部最優(yōu)搜索算法。因此需要將最佳優(yōu)先結合具體的應用進行改進,以跳出局部最優(yōu)點。將在第4節(jié)中結合網頁分析算法作具體的討論。研究表明,這樣的閉環(huán)調整可以將無關網頁數量降低30%~90%。
3、深度優(yōu)先搜索
深度優(yōu)先搜索策略從起始網頁開始,選擇一個URL進入,分析這個網頁中的URL,選擇一個再進入。如此一個鏈接一個鏈接地抓取下去,直到處理完一條路線之后再處理下一條路線。深度優(yōu)先策略設計較為簡單。然而門戶網站提供的鏈接往往最具價值,PageRank也很高,但每深入一層,網頁價值和PageRank都會相應地有所下降。這暗示了重要網頁通常距離種子較近,而過度深入抓取到的網頁卻價值很低。同時,這種策略抓取深度直接影響著抓取命中率以及抓取效率,對抓取深度是該種策略的關鍵。相對于其他兩種策略而言。此種策略很少被使用。
常見爬蟲匯總
五、常見爬蟲匯總:
1、RBSE (Eichmann,1994)是第一個發(fā)布的爬蟲。它有兩個基礎程序。第一個是“spider”,抓取隊列中的內容到一個關系數據庫中,第二個程序是“mite”,是一個修改后的www的ASCII瀏覽器,負責從網絡上下載頁面。
2、WebCrawler(Pinkerton,1994)是第一個公開可用的用來建立全文索引的一個子程序,他使用庫www來下載頁面;另外一個程序使用廣度優(yōu)先來解析獲取URL并對其排序;它還包括一個根據選定文本和查詢相似程度爬行的實時爬蟲。
3、World Wide Web Worm (McBryan, 1994)是一個用來為文件建立包括標題和URL簡單索引的爬蟲。索引可以通過grep式的Unix命令來搜索。
4、Google Crawler (Brin and Page, 1998)用了一些細節(jié)來描述,但是這些細節(jié)僅僅是關于使用C++和Python編寫的、一個早期版本的體系結構。因為文本解析就是文檢索和URL抽取的過程,所以爬蟲集成了索引處理。這里擁有一個URL金口河服務器,用來給幾個爬蟲程序發(fā)送要抓取的URL列表。在文本解析的時候,新發(fā)現的URL傳送給URL金口河服務器并檢測這個URL是不是已經存在,如果不存在的話,該URL就加入到URL金口河服務器中。
5、CobWeb (da Silva et al., 1999)使用了一個中央“調度者”和一系列的“分布式的搜集者”。搜集者解析下載的頁面并把找到的URL發(fā)送給調度者,然后調度者反過來分配給搜集者。調度者使用深度優(yōu)先策略,并且使用平衡禮貌策略來避免服務器超載。爬蟲是使用Perl語言編寫的。
6、Mercator (Heydon and Najork, 1999; Najork and Heydon, 2001)是一個分布式的,模塊化的使用java編寫的網絡爬蟲。它的模塊化源自于使用可互換的的“協議模塊”和“處理模塊”。協議模塊負責怎樣獲取網頁(例如使用HTTP),處理模塊負責怎樣處理頁面。標準處理模塊僅僅包括了解析頁面和抽取URL,其他處理模塊可以用來檢索文本頁面,或者搜集網絡數據。
7、WebFountain (Edwards et al., 2001)是一個與Mercator類似的分布式的模塊化的爬蟲,但是使用C++編寫的。它的特點是一個管理員機器控制一系列的螞蟻機器。經過多次下載頁面后,頁面的變化率可以推測出來,這時,一個非線性的方法必須用于求解方程以獲得一個最大的新鮮度的訪問策略。作者推薦在早期檢索階段使用這個爬蟲,然后用統一策略檢索,就是所有的頁面都使用相同的頻率訪問。
8、PolyBot [Shkapenyuk and Suel, 2002]是一個使用C++和Python編寫的分布式網絡爬蟲。它由一個爬蟲管理者,一個或多個下載者,一個或多個DNS解析者組成。抽取到的URL被添加到硬盤的一個隊列里面,然后使用批處理的模式處理這些URL。平衡禮貌方面考慮到了第二、三級網域(例如www.seokuaipai.cn 和 www2.seokuaipai.cn 都是三級網域),因為第三級網域通常也會保存在同一個網絡服務器上。
9、WebRACE (Zeinalipour-Yazti and Dikaiakos, 2002)是一個使用java實現的,擁有檢索模塊和緩存模塊的爬蟲,它是一個很通用的稱作eRACE的系統的一部分。系統從用戶得到下載頁面的請求,爬蟲的行為有點像一個聰明的代理服務器。系統還監(jiān)視訂閱網頁的請求,當網頁發(fā)生改變的時候,它必須使爬蟲下載更新這個頁面并且通知訂閱者。WebRACE最大的特色是,當大多數的爬蟲都從一組URL開始的時候,WebRACE可以連續(xù)地的接收抓取開始的URL地址。
10、Ubicrawer (Boldi et al., 2004)是一個使用java編寫的分布式爬蟲。它沒有中央程序。它有一組完全相同的代理組成,分配功能通過主機前后一致的散列計算進行。這里沒有重復的頁面,除非爬蟲崩潰了(然后,另外一個代理就會接替崩潰的代理重新開始抓?。E老x設計為高伸縮性和允許失敗的。
11、FAST Crawler (Risvik and Michelsen, 2002) 是一個分布式的爬蟲,在Fast Search&Transfer中使用,關于其體系結構的一個大致的描述可以在[citation needed]找到。
12、Labrador,一個工作在開源項目Terrier Search Engine上的非開源的爬蟲。
13、TeezirCrawler是一個非開源的可伸縮的網頁抓取器,在Teezir上使用。該程序被設計為一個完整的可以處理各種類型網頁的爬蟲,包括各種JavaScript和HTML文檔。爬蟲既支持主題檢索也支持非主題檢索。
14、Spinn3r, 一個通過博客構建Tailrank.com反饋信息的爬蟲。 Spinn3r是基于java的,它的大部分的體系結構都是開源的。
15、HotCrawler,一個使用c語言和php編寫的爬蟲。
16、ViREL Microformats Crawler,搜索公眾信息作為嵌入到網頁的一小部分。
除了上面列出的幾個特定的爬蟲結構以外,還有Cho (Cho and Garcia-Molina, 2002)和Chakrabarti (Chakrabarti, 2003)發(fā)布的一般的爬蟲體系結構。
開源爬蟲匯總
六、開源爬蟲匯總:
1、DataparkSearch是一個在GNU GPL許可下發(fā)布的爬蟲搜索引擎。
2、GNU Wget是一個在GPL許可下,使用C語言編寫的命令行式的爬蟲。它主要用于網絡服務器和FTP服務器的鏡像。
3、Heritrix是一個互聯網檔案館級的爬蟲,設計的目標為對大型網絡的大部分內容的定期存檔快照,是使用java編寫的。
4、Ht://Dig在它和索引引擎中包括了一個網頁爬蟲。
5、HTTrack用網絡爬蟲創(chuàng)建網絡站點鏡像,以便離線觀看。它使用C語言編寫,在GPL許可下發(fā)行。
6、ICDL Crawler是一個用C++編寫,跨平臺的網絡爬蟲。它僅僅使用空閑的CPU資源,在ICDL標準上抓取整個站點。
7、JSpider是一個在GPL許可下發(fā)行的,高度可配置的,可定制的網絡爬蟲引擎。
8、LLarbin由Sebastien Ailleret開發(fā);
9、Webtools4larbin由Andreas Beder開發(fā);
10、Methabot是一個使用C語言編寫的高速優(yōu)化的,使用命令行方式運行的,在2-clause BSD許可下發(fā)布的網頁檢索器。它的主要的特性是高可配置性,模塊化;它檢索的目標可以是本地文件系統,HTTP或者FTP。
11、Nutch是一個使用java編寫,在Apache許可下發(fā)行的爬蟲。它可以用來連接Lucene的全文檢索套件;
12、Pavuk是一個在GPL許可下發(fā)行的,使用命令行的WEB站點鏡像工具,可以選擇使用X11的圖形界面。與wget和httprack相比,他有一系列先進的特性,如以正則表達式為基礎的文件過濾規(guī)則和文件創(chuàng)建規(guī)則。
13、WebVac是斯坦福WebBase項目使用的一個爬蟲。
14、WebSPHINX(Miller and Bharat, 1998)是一個由java類庫構成的,基于文本的搜索引擎。它使用多線程進行網頁檢索,html解析,擁有一個圖形用戶界面用來設置開始的種子URL和抽取下載的數據;
15、WIRE-網絡信息檢索環(huán)境(Baeza-Yates 和 Castillo, 2002)是一個使用C++編寫,在GPL許可下發(fā)行的爬蟲,內置了幾種頁面下載安排的策略,還有一個生成報告和統計資料的模塊,所以,它主要用于網絡特征的描述;
16、LWP:RobotUA(Langheinrich,2004)是一個在Perl5許可下發(fā)行的,可以優(yōu)異的完成并行任務的 Perl類庫構成的機器人。
17、Web Crawler是一個為.net準備的開放源代碼的網絡檢索器(C#編寫)。
18、Sherlock Holmes收集和檢索本地和網絡上的文本類數據(文本文件,網頁),該項目由捷克門戶網站中樞(Czech web portal Centrum)贊助并且主用商用于這里;它同時也使用在Onet.pl。
19、YaCy是一個基于P2P網絡的免費的分布式搜索引擎(在GPL許可下發(fā)行);
20、Ruya是一個在廣度優(yōu)先方面表現優(yōu)秀,基于等級抓取的開放源代碼的網絡爬蟲。在英語和日語頁面的抓取表現良好,它在GPL許可下發(fā)行,并且完全使用Python編寫。按照robots.txt有一個延時的單網域延時爬蟲。
21、Universal Information Crawler快速發(fā)展的網絡爬蟲,用于檢索存儲和分析數據;
22、Agent Kernel,當一個爬蟲抓取時,用來進行安排,并發(fā)和存儲的java框架。
23、Arachnod.net是一個使用C#編寫,需要SQL Server 2005支持的,在GPL許可下發(fā)行的多功能的開源的機器人。它可以用來下載,檢索,存儲包括電子郵件地址,文件,超鏈接,圖片和網頁在內的各種數據。
24、Dine是一個多線程的java的http客戶端。它可以在LGPL許可下進行二次開發(fā)。
以上文章來源于網絡,如有侵權請聯系創(chuàng)一網的客服處理。謝謝!