33款你可能不知道的開源爬蟲軟件工具

微信公衆號:Python數據科學
知乎:數據分析師javascript


要玩大數據,沒有數據怎麼玩?這裏推薦一些33款開源爬蟲軟件給你們。php

爬蟲,即網絡爬蟲,是一種自動獲取網頁內容的程序。是搜索引擎的重要組成部分,所以搜索引擎優化很大程度上就是針對爬蟲而作出的優化。css

網絡爬蟲是一個自動提取網頁的程序,它爲搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。傳統爬蟲從一個或若干初始網頁的URL開始,得到初始網頁上的URL,在抓取網頁的過程當中,不斷從當前頁面上抽取新的URL放入隊列,直到知足系統的必定中止條件。聚焦爬蟲的工做流程較爲複雜,須要根據必定的網頁分析算法過濾與主題無關的連接,保留有用的連接並將其放入等待抓取的URL隊列。而後,它將根據必定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重覆上述過程,直到達到系統的某一條件時中止。另外,全部被爬蟲抓取的網頁將會被系統存貯,進行必定的分析、過濾,並創建索引,以便以後的查詢和檢索;對於聚焦爬蟲來講,這一過程所獲得的分析結果還可能對之後的抓取過程給出反饋和指導。html

世界上已經成型的爬蟲軟件多達上百種,本文對較爲知名及常見的開源爬蟲軟件進行梳理,按開發語言進行彙總。雖然搜索引擎也有爬蟲,但本次我彙總的只是爬蟲軟件,而非大型、複雜的搜索引擎,由於不少兄弟只是想爬取數據,而非運營一個搜索引擎。java

clipboard.png

Java爬蟲

1.Arachnid

Arachnid是一個基於Java的web spider框架.它包含一個簡單的HTML剖析器可以分析包含HTML內容的輸入流.經過實現Arachnid的子類就可以開發一個簡單的Web spiders並可以在Web站上的每一個頁面被解析以後增長几行代碼調用。 Arachnid的下載包中包含兩個spider應用程序例子用於演示如何使用該框架。node

特色:微型爬蟲框架,含有一個小型HTML解析器python

許可證:GPLmysql

2.crawlzilla

crawlzilla 是一個幫你輕鬆創建搜索引擎的自由軟件,有了它,你就不用依靠商業公司的搜索引擎,也不用再煩惱公司內部網站資料索引的問題。linux

由 nutch 專案爲核心,並整合更多相關套件,並卡發設計安裝與管理UI,讓使用者更方便上手。git

crawlzilla 除了爬取基本的 html 外,還能分析網頁上的文件,如( doc、pdf、ppt、ooo、rss )等多種文件格式,讓你的搜索引擎不僅是網頁搜索引擎,而是網站的完整資料索引庫。

擁有中文分詞能力,讓你的搜索更精準。

crawlzilla的特點與目標,最主要就是提供使用者一個方便好用易安裝的搜索平臺。

受權協議: Apache License 2
開發語言: Java JavaScript SHELL
操做系統: Linux

特色:安裝簡易,擁有中文分詞功能

3.Ex-Crawler

Ex-Crawler 是一個網頁爬蟲,採用 Java 開發,該項目分紅兩部分,一個是守護進程,另一個是靈活可配置的 Web 爬蟲。使用數據庫存儲網頁信息。

受權協議: GPLv3
開發語言: Java
操做系統: 跨平臺

特色:由守護進程執行,使用數據庫存儲網頁信息

4.Heritrix

Heritrix 是一個由 java 開發的、開源的網絡爬蟲,用戶可使用它來從網上抓取想要的資源。其最出色之處在於它良好的可擴展性,方便用戶實現本身的抓取邏輯。

Heritrix採用的是模塊化的設計,各個模塊由一個控制器類(CrawlController類)來協調,控制器是總體的核心。

代碼託管:https://github.com/internetar...

受權協議: Apache
開發語言: Java
操做系統: 跨平臺
特色:嚴格遵守robots文件的排除指示和META robots標籤

5.heyDr

clipboard.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

是一套完整的網頁內容抓取、格式化、數據集成、存儲管理和搜索解決方案。

網絡爬蟲有多種實現方法,若是按照部署在哪裏分,能夠分紅:

  1. 服務器側:通常是一個多線程程序,同時下載多個目標HTML,能夠用PHP, Java, Python(當前很流行)等作,能夠速度作得很快,通常綜合搜索引擎的爬蟲這樣作。可是,若是對方討厭爬蟲,極可能封掉你的IP,服務器IP又不容易 改,另外耗用的帶寬也是挺貴的。建議看一下Beautiful soap。
  2. 客戶端:通常實現定題爬蟲,或者是聚焦爬蟲,作綜合搜索引擎不容易成功,而垂直搜訴或者比價服務或者推薦引擎,相對容易不少,這類爬蟲不是什麼頁面都 取的,而是隻取你關係的頁面,並且只取頁面上關心的內容,例如提取黃頁信息,商品價格信息,還有提取競爭對手廣告信息的,搜一下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,只需少許代碼便可實現一個爬蟲。

clipboard.png

webmagic採用徹底模塊化的設計,功能覆蓋整個爬蟲的生命週期(連接提取、頁面下載、內容抽取、持久化),支持多線程抓取,分佈式抓取,並支持自動重試、自定義UA/cookie等功能。

clipboard.png

webmagic包含強大的頁面抽取功能,開發者能夠便捷的使用css selector、xpath和正則表達式進行連接和內容的提取,支持多個選擇器鏈式調用。

webmagic的使用文檔:http://webmagic.io/docs/

查看源代碼:http://git.oschina.net/flashs...

受權協議: 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...

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/t...

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/...

特色:統計信息、執行過程可視化

24.Sinawler

國內第一個針對微博數據的爬蟲程序!原名「新浪微博爬蟲」。

登陸後,能夠指定用戶爲起點,以該用戶的關注人、粉絲爲線索,延人脈關係蒐集用戶基本信息、微博數據、評論數據。

該應用獲取的數據可做爲科研、與新浪微博相關的研發等的數據支持,但請勿用於商業用途。該應用基於.NET2.0框架,需SQL SERVER做爲後臺數據庫,並提供了針對SQL Server的數據庫腳本文件。

另外,因爲新浪微博API的限制,爬取的數據可能不夠完整(如獲取粉絲數量的限制、獲取微博數量的限制等)

本程序版權歸做者全部。你能夠免費: 拷貝、分發、呈現和表演當前做品,製做派生做品。 你不可將當前做品用於商業目的。

5.x版本已經發布! 該版本共有6個後臺工做線程:爬取用戶基本信息的機器人、爬取用戶關係的機器人、爬取用戶標籤的機器人、爬取微博內容的機器人、爬取微博評論的機器人,以及調節請求頻率的機器人。更高的性能!最大限度挖掘爬蟲潛力! 以如今測試的結果看,已經可以知足自用。

本程序的特色:

  1. 6個後臺工做線程,最大限度挖掘爬蟲性能潛力!
  2. 界面上提供參數設置,靈活方便
  3. 拋棄app.config配置文件,本身實現配置信息的加密存儲,保護數據庫賬號信息
  4. 自動調整請求頻率,防止超限,也避免過慢,下降效率
  5. 任意對爬蟲控制,可隨時暫停、繼續、中止爬蟲
  6. 良好的用戶體驗

受權協議: GPLv3
開發語言: C# .NET
操做系統: Windows

25.spidernet

spidernet是一個以遞歸樹爲模型的多線程web爬蟲程序, 支持text/html資源的獲取. 能夠設定爬行深度, 最大下載字節數限制, 支持gzip解碼, 支持以gbk(gb2312)和utf8編碼的資源; 存儲於sqlite數據文件.

源碼中TODO:標記描述了未完成功能, 但願提交你的代碼.

受權協議: MIT
開發語言: C#
操做系統: Windows

github源代碼:https://github.com/nsnail/spi...

特色:以遞歸樹爲模型的多線程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/navigat...

受權協議: GPL
開發語言: PHP
操做系統: 跨平臺

特色:具備採集網頁內容、提交表單功能

30.ThinkUp

ThinkUp 是一個能夠採集推特,facebook等社交網絡數據的社會媒體視角引擎。經過採集我的的社交網絡帳號中的數據,對其存檔以及處理的交互分析工具,並將數據圖形化以便更直觀的查看。

clipboard.png

clipboard.png

受權協議: GPL
開發語言: PHP
操做系統: 跨平臺
github源碼:https://github.com/ThinkUpLLC...

特色:採集推特、臉譜等社交網絡數據的社會媒體視角引擎,可進行交互分析並將結果以可視化形式展示

31.微購

微購社會化購物系統是一款基於ThinkPHP框架開發的開源的購物分享系統,同時它也是一套針對站長、開源的的淘寶客網站程序,它整合了淘寶、天貓、淘寶客等300多家商品數據採集接口,爲廣大的淘寶客站長提供傻瓜式淘客建站服務,會HTML就會作程序模板,免費開放下載,是廣大淘客站長的首選。

演示網址:http://tlx.wego360.com

受權協議: GPL
開發語言: PHP
操做系統: 跨平臺

ErLang爬蟲

32.Ebot

Ebot 是一個用 ErLang 語言開發的可伸縮的分佈式網頁爬蟲,URLs 被保存在數據庫中可經過 RESTful 的 HTTP 請求來查詢。

受權協議: GPLv3
開發語言: ErLang
操做系統: 跨平臺

github源代碼:https://github.com/matteoreda...

項目主頁: http://www.redaelli.org/matte...

特色:可伸縮的分佈式網頁爬蟲

Ruby爬蟲

33.Spidr

Spidr 是一個Ruby 的網頁爬蟲庫,能夠將整個網站、多個網站、某個連接徹底抓取到本地。

開發語言: Ruby
受權協議:MIT
特色:可將一個或多個網站、某個連接徹底抓取到本地

以上內容來自36大數據(36dsj.com):36大數據:33款可用來抓數據的開源爬蟲軟件工具


往期回顧:

Python從零學爬蟲
Python爬蟲之urllib庫—進階篇
Python爬蟲之—微信實時爬取電影諮詢

關注微信公衆號 Python數據科學,獲取更多精彩內容,帶你走進爬蟲世界。

clipboard.png

收藏的小夥伴們,也順手點個贊吧。

相關文章
相關標籤/搜索