33 款可用來抓數據的開源爬蟲軟體工具
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 機器人,爬蟲)開源項目。支持通過下載模板和正則表達式來定義下載規則。提供一個 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 工具包是免費使用的,下載地址: http://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 開發人員使用。使用方法:
下載右邊的.war 包導入到 eclipse 中,
使用 WebContent/sql 下的 wcc.sql 文件建立一個範例資料庫,
修改 src 包下 wcc.core 的 dbConfig.txt,將用戶名與密碼設置成你自己的
mysql 用戶名密碼。
然後運行 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, 只需少量代碼即可實現一個爬蟲。
webmagic
採用完全模塊化的設計,功能覆蓋整個爬蟲的生命周期(鏈接提取、頁面下載、內容抽取、持久化),支持多線程抓取,分散式抓取,並支持自動重試、自定義 UA/cookie 等功能。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
等社交網路數據的社會媒體視角引擎。通過採集個人的社交網路賬號中的數據,對其存檔以及處理的交互分析工具,並將數據圖形化以便更直觀的查看。授權協議: 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
特點:可將一個或多個網站、某個鏈接完全抓取到本地
推薦閱讀:
※《直接拿來用!最火的Android開源項目》系列:
※開放基礎架構新浪潮:互聯網巨頭背後的OpenStack
※GitHub新CEO現身答疑:微軟要對GitHub做什麼?
※GitHub開源項目2018-06-04更新精選
※Python 回測終端--PythonLab 開源發布