世界上已經成型的爬蟲軟體多達上百種,本文對較為知名及常見的開源爬蟲軟體進行梳理,按開發語言進行彙總。
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
0?wx_fmt=png
heyDr是一款基于java的輕量級開源多線程垂直檢索爬蟲架構,遵循GNU GPL V3協定。
使用者可以通過heyDr建構自己的垂直資源爬蟲,用于搭建垂直搜尋引擎前期的資料準備。
授權協定: GPLv3
開發語言: Java
作業系統: 跨平台
特點:輕量級開源多線程垂直檢索爬蟲架構
6.ItSucks
ItSucks是一個java web spider(web機器人,爬蟲)開源項目。支援通過下載下傳模闆和正規表達式來定義下載下傳規則。提供一個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
是一套完整的網頁内容抓取、格式化、資料內建、存儲管理和搜尋解決方案。
網絡爬蟲有多種實作方法,如果按照部署在哪裡分,可以分成:
伺服器側:一般是一個多線程程式,同時下載下傳多個目标HTML,可以用PHP, Java, Python(目前很流行)等做,可以速度做得很快,一般綜合搜尋引擎的爬蟲這樣做。但是,如果對方讨厭爬蟲,很可能封掉你的IP,伺服器IP又不容易 改,另外耗用的帶寬也是挺貴的。建議看一下Beautiful soap。
用戶端:一般實作定題爬蟲,或者是聚焦爬蟲,做綜合搜尋引擎不容易成功,而垂直搜訴或者比價服務或者推薦引擎,相對容易很多,這類爬蟲不是什麼頁面都 取的,而是隻取你關系的頁面,而且隻取頁面上關心的内容,例如提取黃頁資訊,商品價格資訊,還有提取競争對手廣告資訊的,搜一下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,熟悉正規表達式。目前通過這個工具可以抓取各類論壇,貼吧,以及各類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論壇的内容。
授權協定: MIT
開發語言: Java
作業系統: 跨平台
特點:通過XML配置檔案實作高度可定制性與可擴充性
12.Spiderman
Spiderman 是一個基于微核心+插件式架構的網絡蜘蛛,它的目标是通過簡單的方法就能将複雜的目标網頁資訊抓取并解析為自己所需要的業務資料。
怎麼使用?
首先,确定好你的目标網站以及目标網頁(即某一類你想要擷取資料的網頁,例如網易新聞的新聞頁面)
然後,打開目标頁面,分析頁面的HTML結構,得到你想要資料的XPath,具體XPath怎麼擷取請看下文。
最後,在一個xml配置檔案裡填寫好參數,運作Spiderman吧!
授權協定: Apache
開發語言: Java
作業系統: 跨平台
特點:靈活、擴充性強,微核心+插件式架構,通過簡單的配置就可以完成資料抓取,無需編寫一句代碼
13.webmagic
webmagic的是一個無須配置、便于二次開發的爬蟲架構,它提供簡單靈活的API,隻需少量代碼即可實作一個爬蟲。
0?wx_fmt=png
webmagic采用完全子產品化的設計,功能覆寫整個爬蟲的生命周期(連結提取、頁面下載下傳、内容抽取、持久化),支援多線程抓取,分布式抓取,并支援自動重試、自定義UA/cookie等功能。
0?wx_fmt=png
webmagic包含強大的頁面抽取功能,開發者可以便捷的使用css selector、xpath和正規表達式進行連結和内容的提取,支援多個選擇器鍊式調用。
webmagic的使用文檔:http://webmagic.io/docs/
檢視源代碼:http://git.oschina.net/flashsword20/webmagic
授權協定: Apache
開發語言: Java
作業系統: 跨平台
特點:功能覆寫整個爬蟲生命周期,使用Xpath和正規表達式進行連結和内容的提取。
14.Web-Harvest
Web-Harvest是一個Java開源Web資料抽取工具。它能夠收集指定的Web頁面并從這些頁面中提取有用的資料。Web-Harvest主要是運用了像XSLT,XQuery,正規表達式等這些技術來實作對text/xml的操作。
其實作原理是,根據預先定義的配置檔案用httpclient擷取頁面的全部内容(關于httpclient的内容,本博有些文章已介紹),然後運用XPath、XQuery、正規表達式等這些技術來實作對text/xml的内容篩選操作,選取精确的資料。前兩年比較火的垂直搜尋(比如:酷訊等)也是采用類似的原理實作的。Web-Harvest應用,關鍵就是了解和定義配置檔案,其他的就是考慮怎麼處理資料的Java代碼。當然在爬蟲開始前,也可以把Java變量填充到配置檔案中,實作動态的配置。
授權協定: BSD
開發語言: Java
特點:運用XSLT、XQuery、正規表達式等技術來實作對Text或XML的操作,具有可視化的界面
15.WebSPHINX
WebSPHINX是一個Java類包和Web爬蟲的互動式開發環境。Web爬蟲(也叫作機器人或蜘蛛)是可以自動浏覽與處理Web頁面的程式。WebSPHINX由兩部分組成:爬蟲工作平台和WebSPHINX類包。
授權協定:Apache
開發語言:Java
特點:由兩部分組成:爬蟲工作平台和WebSPHINX類包
16.YaCy
YaCy基于p2p的分布式Web搜尋引擎.同時也是一個Http緩存代理伺服器.這個項目是建構基于p2p Web索引網絡的一個新方法.它可以搜尋你自己的或全局的索引,也可以Crawl自己的網頁或啟動分布式Crawling等.
授權協定: GPL
開發語言: Java Perl
作業系統: 跨平台
特點:基于P2P的分布式Web搜尋引擎
Python爬蟲
17.QuickRecon
QuickRecon是一個簡單的資訊收集工具,它可以幫助你查找子域名名稱、perform zone transfe、收集電子郵件位址和使用microformats尋找人際關系等。QuickRecon使用python編寫,支援linux和 windows作業系統。
授權協定: GPLv3
開發語言: Python
作業系統: Windows Linux
特點:具有查找子域名名稱、收集電子郵件位址并尋找人際關系等功能
18.PyRailgun
這是一個非常簡單易用的抓取工具。支援抓取javascript渲染的頁面的簡單實用高效的python網頁爬蟲抓取子產品
授權協定: MIT
開發語言: Python
作業系統: 跨平台 Windows Linux OS X
特點:簡潔、輕量、高效的網頁抓取架構
github下載下傳:https://github.com/princehaku/pyrailgun#readme
19.Scrapy
Scrapy 是一套基于基于Twisted的異步處理架構,純python實作的爬蟲架構,使用者隻需要定制開發幾個子產品就可以輕松的實作一個爬蟲,用來抓取網頁内容以及各種圖檔,非常之友善~
授權協定: BSD
開發語言: Python
作業系統: 跨平台
github源代碼:https://github.com/scrapy/scrapy
特點:基于Twisted的異步處理架構,文檔齊全
C++爬蟲
20.hispider
HiSpider is a fast and high performance spider with high speed
嚴格說隻能是一個spider系統的架構, 沒有細化需求, 目前隻是能提取URL, URL排重, 異步DNS解析, 隊列化任務, 支援N機分布式下載下傳, 支援網站定向下載下傳(需要配置hispiderd.ini whitelist).
特征和用法:
基于unix/linux系統的開發
異步DNS解析
URL排重
支援HTTP 壓縮編碼傳輸 gzip/deflate
字元集判斷自動轉換成UTF-8編碼
文檔壓縮存儲
支援多下載下傳節點分布式下載下傳
支援網站定向下載下傳(需要配置 hispiderd.ini whitelist )
可通過 http://127.0.0.1:3721/ 檢視下載下傳情況統計,下載下傳任務控制(可停止和恢複任務)
依賴基本通信庫libevbase 和 libsbase (安裝的時候需要先安裝這個兩個庫)
工作流程:
從中心節點取URL(包括URL對應的任務号, IP和port,也可能需要自己解析)
連接配接伺服器發送請求
等待資料頭判斷是否需要的資料(目前主要取text類型的資料)
等待完成資料(有length頭的直接等待說明長度的資料否則等待比較大的數字然後設定逾時)
資料完成或者逾時, zlib壓縮資料傳回給中心伺服器,資料可能包括自己解析DNS資訊, 壓縮後資料長度+壓縮後資料,如果出錯就直接傳回任務号以及相關資訊
中心伺服器收到帶有任務号的資料, 檢視是否包括資料, 如果沒有資料直接置任務号對應的狀态為錯誤, 如果有資料提取資料種link然後存儲資料到文檔檔案
完成後傳回一個新的任務
授權協定: BSD
開發語言: C/C++
作業系統: Linux
特點:支援多機分布式下載下傳, 支援網站定向下載下傳
21.larbin
larbin是一種開源的網絡爬蟲/網絡蜘蛛,由法國的年輕人 Sébastien Ailleret獨立開發。larbin目的是能夠跟蹤頁面的url進行擴充的抓取,最後為搜尋引擎提供廣泛的資料來源。Larbin隻是一個爬蟲,也就 是說larbin隻抓取網頁,至于如何parse的事情則由使用者自己完成。另外,如何存儲到資料庫以及建立索引的事情 larbin也不提供。一個簡單的larbin的爬蟲可以每天擷取500萬的網頁。
利用larbin,我們可以輕易的擷取/确定單個網站的所有連結,甚至可以鏡像一個網站;也可以用它建立url 清單群,例如針對所有的網頁進行 url retrive後,進行xml的聯結的擷取。或者是 mp3,或者定制larbin,可以作為搜尋引擎的資訊的來源。
授權協定: GPL
開發語言: C/C++
作業系統: Linux
特點:高性能的爬蟲軟體,隻負責抓取不負責解析
22.Methabot
Methabot 是一個經過速度優化的高可配置的 WEB、FTP、本地檔案系統的爬蟲軟體。
授權協定: 未知
開發語言: C/C++
作業系統: Windows Linux
特點:過速度優化、可抓取WEB、FTP及本地檔案系統
源代碼:http://www.oschina.net/code/tag/methabot
C#爬蟲
23.NWebCrawler
NWebCrawler是一款開源,C#開發網絡爬蟲程式。
特性:
可配置:線程數,等待時間,連接配接逾時,允許MIME類型和優先級,下載下傳檔案夾。
統計資訊:URL數量,總下載下傳檔案,總下載下傳位元組數,CPU使用率和可用記憶體。
Preferential crawler:使用者可以設定優先級的MIME類型。
Robust: 10+ URL normalization rules, crawler trap avoiding rules.
授權協定: GPLv2
開發語言: C#
作業系統: Windows
項目首頁:http://www.open-open.com/lib/view/home/1350117470448
特點:統計資訊、執行過程可視化
24.Sinawler
國内第一個針對微網誌資料的爬蟲程式!原名“新浪微網誌爬蟲”。
登入後,可以指定使用者為起點,以該使用者的關注人、粉絲為線索,延人脈關系搜集使用者基本資訊、微網誌資料、評論資料。
該應用擷取的資料可作為科研、與新浪微網誌相關的研發等的資料支援,但請勿用于商業用途。該應用基于.NET2.0架構,需SQL SERVER作為背景資料庫,并提供了針對SQL Server的資料庫腳本檔案。
另外,由于新浪微網誌API的限制,爬取的資料可能不夠完整(如擷取粉絲數量的限制、擷取微網誌數量的限制等)
5.x版本已經釋出! 該版本共有6個背景工作線程:爬取使用者基本資訊的機器人、爬取使用者關系的機器人、爬取使用者标簽的機器人、爬取微網誌内容的機器人、爬取微網誌評論的機器人,以及調節請求頻率的機器人。更高的性能!最大限度挖掘爬蟲潛力! 以現在測試的結果看,已經能夠滿足自用。
本程式的特點:
6個背景工作線程,最大限度挖掘爬蟲性能潛力!
界面上提供參數設定,靈活友善
抛棄app.config配置檔案,自己實作配置資訊的加密存儲,保護資料庫帳号資訊
自動調整請求頻率,防止超限,也避免過慢,降低效率
任意對爬蟲控制,可随時暫停、繼續、停止爬蟲
良好的使用者體驗
授權協定: GPLv3
開發語言: C# .NET
作業系統: Windows
25.spidernet
spidernet是一個以遞歸樹為模型的多線程web爬蟲程式, 支援text/html資源的擷取. 可以設定爬行深度, 最大下載下傳位元組數限制, 支援gzip解碼, 支援以gbk(gb2312)和utf8編碼的資源; 存儲于sqlite資料檔案.
源碼中TODO:标記描述了未完成功能, 希望送出你的代碼.
授權協定: MIT
開發語言: C#
作業系統: Windows
github源代碼:https://github.com/nsnail/spidernet
特點:以遞歸樹為模型的多線程web爬蟲程式,支援以GBK (gb2312)和utf8編碼的資源,使用sqlite存儲資料
26.Web Crawler
mart and Simple Web Crawler是一個Web爬蟲架構。內建Lucene支援。該爬蟲可以從單個連結或一個連結數組開始,提供兩種周遊模式:最大疊代和最大深度。可以設定 過濾器限制爬回來的連結,預設提供三個過濾器ServerFilter、BeginningPathFilter和 RegularExpressionFilter,這三個過濾器可用AND、OR和NOT聯合。在解析過程或頁面加載前後都可以加監聽器。介紹内容來自Open-Open
開發語言: Java
作業系統: 跨平台
授權協定: LGPL
特點:多線程,支援抓取PDF/DOC/EXCEL等文檔來源
27.網絡礦工
網站資料采集軟體 網絡礦工采集器(原soukey采摘)
Soukey采摘網站資料采集軟體是一款基于.Net平台的開源軟體,也是網站資料采集軟體類型中唯一一款開源軟體。盡管Soukey采摘開源,但并不會影響軟體功能的提供,甚至要比一些商用軟體的功能還要豐富。
授權協定: BSD
開發語言: C# .NET
作業系統: Windows
特點:功能豐富,毫不遜色于商業軟體
PHP爬蟲
28.OpenWebSpider
OpenWebSpider是一個開源多線程Web Spider(robot:機器人,crawler:爬蟲)和包含許多有趣功能的搜尋引擎。
授權協定: 未知
開發語言: PHP
作業系統: 跨平台
特點:開源多線程網絡爬蟲,有許多有趣的功能
29.PhpDig
PhpDig是一個采用PHP開發的Web爬蟲和搜尋引擎。通過對動态和靜态頁面進行索引建立一個詞彙表。當搜尋查詢時,它将按一定的排序規則顯示包含關 鍵字的搜尋結果頁面。PhpDig包含一個模闆系統并能夠索引PDF,Word,Excel,和PowerPoint文檔。PHPdig适用于專業化更 強、層次更深的個性化搜尋引擎,利用它打造針對某一領域的垂直搜尋引擎是最好的選擇。
示範:http://www.phpdig.net/navigation.php?action=demo
授權協定: GPL
開發語言: PHP
作業系統: 跨平台
特點:具有采集網頁内容、送出表單功能
30.ThinkUp
ThinkUp 是一個可以采集推特,facebook等社交網絡資料的社會媒體視角引擎。通過采集個人的社交網絡賬号中的資料,對其存檔以及處理的互動分析工具,并将資料圖形化以便更直覺的檢視。
0?wx_fmt=png
0?wx_fmt=png
授權協定: GPL
開發語言: PHP
作業系統: 跨平台
github源碼:https://github.com/ThinkUpLLC/ThinkUp
特點:采集推特、臉譜等社交網絡資料的社會媒體視角引擎,可進行互動分析并将結果以可視化形式展現
31.微購
微購社會化購物系統是一款基于ThinkPHP架構開發的開源的購物分享系統,同時它也是一套針對站長、開源的的淘寶客網站程式,它整合了淘寶、天貓、淘寶客等300多家商品資料采集接口,為廣大的淘寶客站長提供傻瓜式淘客建站服務,會HTML就會做程式模闆,免費開放下載下傳,是廣大淘客站長的首選。
示範網址:http://tlx.wego360.com
授權協定: GPL
開發語言: PHP
作業系統: 跨平台
ErLang爬蟲
32.Ebot
Ebot 是一個用 ErLang 語言開發的可伸縮的分布式網頁爬蟲,URLs 被儲存在資料庫中可通過 RESTful 的 HTTP 請求來查詢。
授權協定: GPLv3
開發語言: ErLang
作業系統: 跨平台
github源代碼:https://github.com/matteoredaelli/ebot
項目首頁:http://www.redaelli.org/matteo/blog/projects/ebot
特點:可伸縮的分布式網頁爬蟲
Ruby爬蟲
33.Spidr
Spidr 是一個Ruby 的網頁爬蟲庫,可以将整個網站、多個網站、某個連結完全抓取到本地。
開發語言: Ruby
授權協定:MIT
特點:可将一個或多個網站、某個連結完全抓取到本地