要玩大資料,沒有資料怎麼玩?這裡推薦一些33款開源爬蟲軟體給大家。
爬蟲,即網路爬蟲,是一種自動擷取網頁內容的程式。是搜尋引擎的重要組成部分,因此搜尋引擎最佳化很大程度上就是針對爬蟲而做出的最佳化。
網路爬蟲是一個自動提取網頁的程式,它為搜尋引擎從全球資訊網上下載網頁,是搜尋引擎的重要組成。傳統爬蟲從一個或若干初始頁面的URL開始,獲得初始頁面上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。聚焦爬蟲的工作流程較為複雜,需要根據一定的網頁分析演算法過濾與主題無關的連結,保留有用的連結並將其放入等待抓取的URL隊列。然後,它將根據一定的搜尋策略從隊列中選擇下一步要抓取的網頁URL,並重複上述過程,直到達到系統的某一條件時停止。另外,所有被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,並建立索引,以便之後的查詢和檢索;對於聚焦爬蟲來說,這一過程所得到的分析結果還可能對以後的抓取過程給出反饋和指導。
世界上已經成型的爬蟲軟體多達上百種,本文對較為知名及常見的開源爬蟲軟體進行梳理,按開發語言進行匯總。雖然搜尋引擎也有爬蟲,但本次我匯總的只是爬蟲軟體,而非大型、複雜的搜尋引擎,因為很多兄弟只是想爬取資料,而非運營一個搜尋引擎。
Java爬蟲
1、Arachnid
Arachnid是一個基於Java的web spider架構.它包含一個簡單的HTML剖析器能夠分析包含HTML內容的輸入資料流.通過實現Arachnid的子類就能夠開發一個簡單的Web spiders並能夠在Web站上的每個頁面被解析之後增加幾行代碼調用。 Arachnid的下載包中包含兩個spider應用程式例子用於示範如何使用該架構。
特點:微型爬蟲架構,含有一個小型HTML解析器
許可證:GPL
2、crawlzilla
crawlzilla 是一個幫你輕鬆建立搜尋引擎的自由軟體,有了它,你就不用依靠商業公司的搜尋引擎,也不用再煩惱公司內部網站資料索引的問題。
由 nutch 專案為核心,並整合更多相關套件,並卡發設計安裝與管理UI,讓使用者更方便上手。
crawlzilla 除了爬取基本的 html 外,還能分析網頁上的檔案,如( doc、pdf、ppt、ooo、rss )等多種檔案格式,讓你的搜尋引擎不只是網頁搜尋引擎,而是網站的完整資料索引庫。
擁有中文分詞能力,讓你的搜尋更精準。
crawlzilla的特色與目標,最主要就是提供使用者一個方便好用易安裝的搜尋平台。
授權協議: Apache License 2
開發語言: Java JavaScript SHELL
作業系統: Linux
項目首頁: https://github.com/shunfa/crawlzilla
下載地址: http://sourceforge.net/projects/crawlzilla/
特點:安裝簡易,擁有中文分詞功能
3、Ex-Crawler
Ex-Crawler 是一個網頁爬蟲,採用 Java 開發,該項目分成兩部分,一個是守護進程,另外一個是靈活可配置的 Web 爬蟲。使用資料庫儲存網頁資訊。
授權協議: GPLv3
開發語言: Java
作業系統: 跨平台
特點:由守護進程執行,使用資料庫儲存網頁資訊
4、Heritrix
Heritrix 是一個由 java 開發的、開源的網路爬蟲,使用者可以使用它來從網上抓取想要的資源。其最出色之處在於它良好的可擴充性,方便使用者實現自己的抓取邏輯。
Heritrix採用的是模組化的設計,各個模組由一個控制器類(CrawlController類)來協調,控制器是整體的核心。
代碼託管:https://github.com/internetarchive/heritrix3
授權協議: Apache
開發語言: Java
作業系統: 跨平台
特點:嚴格遵照robots檔案的排除指示和META robots標籤
5、heyDr
heyDr是一款基於java的輕量級開源多線程垂直檢索爬蟲架構,遵循GNU GPL V3協議。
使用者可以通過heyDr構建自己的垂直資源爬蟲,用於搭建垂直搜尋引擎前期的資料準備。
授權協議: GPLv3
開發語言: Java
作業系統: 跨平台
特點:輕量級開源多線程垂直檢索爬蟲架構
6、ItSucks
ItSucks是一個java web spider(web機器人,爬蟲)開源項目。支援通過下載模板和Regex來定義下載規則。提供一個swing GUI操作介面。
特點:提供swing GUI操作介面
7、jcrawl
jcrawl是一款小巧效能優良的的web爬蟲,它可以從網頁抓取各種類型的檔案,基於使用者定義的符號,比如email,qq.
授權協議: Apache
開發語言: Java
作業系統: 跨平台
特點:輕量、效能優良,可以從網頁抓取各種類型的檔案
8、JSpider
JSpider是一個用Java實現的WebSpider,JSpider的執行格式如下:
jspider [URL] [ConfigName]
URL一定要加上協議名稱,如:http://,否則會報錯。如果省掉ConfigName,則採用預設配置。
JSpider 的行為是由設定檔具體配置的,比如採用什麼外掛程式,結果儲存方式等等都在conf[ConfigName]目錄下設定。JSpider預設的配置種類 很少,用途也不大。但是JSpider非常容易擴充,可以利用它開發強大的網頁抓取與資料分析工具。要做到這些,需要對JSpider的原理有深入的了 解,然後根據自己的需求開發外掛程式,撰寫設定檔。
授權協議: LGPL
開發語言: Java
作業系統: 跨平台
特點:功能強大,容易擴充
9、Leopdo
用JAVA編寫的web 搜尋和爬蟲,包括全文和分類垂直搜尋,以及分詞系統
授權協議: Apache
開發語言: Java
作業系統: 跨平台
特點:包括全文和分類垂直搜尋,以及分詞系統
10、MetaSeeker
是一套完整的網頁內容抓取、格式化、Data Integration、儲存管理和搜尋解決方案。
網路爬蟲有多種實現方法,如果按照部署在哪裡分,可以分成:
1,伺服器側:一般是一個多線程程式,同時下載多個目標HTML,可以用PHP, Java, Python(當前很流行)等做,可以速度做得很快,一般綜合搜尋引擎的爬蟲這樣做。但是,如果對方討厭爬蟲,很可能封掉你的IP,伺服器IP又不容易 改,另外耗用的頻寬也是挺貴的。建議看一下Beautiful soap。
2,用戶端:一般實現定題爬蟲,或者是聚焦爬蟲,做綜合搜尋引擎不容易成功,而垂直搜訴或者比價服務或者Recommendation Engine,相對容易很多,這類爬蟲不是什麼頁面都 取的,而是只取你關係的頁面,而且只取頁面上關心的內容,例如提取黃頁資訊,商品價格資訊,還有提取競爭者廣告資訊的,搜一下Spyfu,很有趣。這類 爬蟲可以部署很多,而且可以很有侵略性,對方很難封鎖。
MetaSeeker中的網路爬蟲就屬於後者。
MetaSeeker工具包利用Mozilla平台的能力,只要是Firefox看到的東西,它都能提取。
MetaSeeker工具包是免費使用的,下載地址:www.gooseeker.com/cn/node/download/front
特點:網頁抓取、資訊提取、資料幫浦工具包,操作簡單
11、Playfish
playfish是一個採用java技術,綜合應用多個開源java組件實現的網頁抓取工具,通過XML設定檔實現高度可定製性與可擴充性的網頁抓取工具
應用開源jar包包括httpclient(內容讀取),dom4j(設定檔解析),jericho(html解析),已經在 war包的lib下。
這個項目目前還很不成熟,但是功能基本都完成了。要求使用者熟悉XML,熟悉Regex。目前通過這個工具可以抓取各類論壇,貼吧,以及各類CMS系統。像Discuz!,phpbb,論壇跟部落格的文章,通過本工具都可以輕鬆抓取。抓取定義完全採用XML,適合Java開發人員使用。
使用方法, 1.下載右邊的.war包匯入到eclipse中, 2.使用WebContent/sql下的wcc.sql檔案建立一個範例資料庫, 3.修改src包下wcc.core的dbConfig.txt,將使用者名稱與密碼設定成你自己的mysql使用者名稱密碼。 4.然後運行SystemCore,運行時候會在控制台,無參數會執行預設的example.xml的設定檔,帶參數時候名稱為設定檔名。
系統內建了3個例子,分別為baidu.xml抓取百度知道,example.xml抓取我的javaeye的部落格,bbs.xml抓取一個採用 discuz論壇的內容。