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

演算法與數學之美發表於2018-09-17

要玩大資料,沒有資料怎麼玩?這裡推薦一些33款開源爬蟲軟體給大家。

2


爬蟲,即網路爬蟲,是一種自動獲取網頁內容的程式。是搜尋引擎的重要組成部分,因此搜尋引擎優化很大程度上就是針對爬蟲而做出的優化。


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


世界上已經成型的爬蟲軟體多達上百種,本文對較為知名及常見的開源爬蟲軟體進行梳理,按開發語言進行彙總。雖然搜尋引擎也有爬蟲,但本次我彙總的只是爬蟲軟體,而非大型、複雜的搜尋引擎,因為很多兄弟只是想爬取資料,而非運營一個搜尋引擎。


640?wx_fmt=png

 Java爬蟲 

2.crawlzilla


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

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

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

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

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

授權協議: Apache License 2
開發語言: Java JavaScript SHELL
作業系統: Linux

專案主頁: https://github.com/shunfa/cra...

下載地址: http://sourceforge.net/projec...

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


4.Heritrix


Heritrix 是一個由 java 開發的、開源的網路爬蟲,使用者可以使用它來從網上抓取想要的資源。其最出色之處在於它良好的可擴充套件性,方便使用者實現自己的抓取邏輯。

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

程式碼託管:https://github.com/internetar...

授權協議: Apache
開發語言: Java
作業系統: 跨平臺
特點:嚴格遵照robots檔案的排除指示和META robots標籤


6.ItSucks


ItSucks是一個java web spider(web機器人,爬蟲)開源專案。支援通過下載模板和正規表示式來定義下載規則。提供一個swing GUI操作介面。

特點:提供swing GUI操作介面


8.JSpider


JSpider是一個用Java實現的WebSpider,JSpider的執行格式如下:

jspider [URL] [ConfigName]

URL一定要加上協議名稱,如:http://,否則會報錯。如果省掉ConfigName,則採用預設配置。

JSpider 的行為是由配置檔案具體配置的,比如採用什麼外掛,結果儲存方式等等都在conf[ConfigName]目錄下設定。JSpider預設的配置種類 很少,用途也不大。但是JSpider非常容易擴充套件,可以利用它開發強大的網頁抓取與資料分析工具。要做到這些,需要對JSpider的原理有深入的了 解,然後根據自己的需求開發外掛,撰寫配置檔案。

授權協議: LGPL
開發語言: 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

特點:網頁抓取、資訊提取、資料抽取工具包,操作簡單


12.Spiderman


Spiderman 是一個基於微核心+外掛式架構的網路蜘蛛,它的目標是通過簡單的方法就能將複雜的目標網頁資訊抓取並解析為自己所需要的業務資料。

怎麼使用?

首先,確定好你的目標網站以及目標網頁(即某一類你想要獲取資料的網頁,例如網易新聞的新聞頁面)

然後,開啟目標頁面,分析頁面的HTML結構,得到你想要資料的XPath,具體XPath怎麼獲取請看下文。

最後,在一個xml配置檔案裡填寫好引數,執行Spiderman吧!

授權協議: Apache
開發語言: Java
作業系統: 跨平臺

特點:靈活、擴充套件性強,微核心+外掛式架構,通過簡單的配置就可以完成資料抓取,無需編寫一句程式碼


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的操作,具有視覺化的介面


16.YaCy


YaCy基於p2p的分散式Web搜尋引擎.同時也是一個Http快取代理伺服器.這個專案是構建基於p2p Web索引網路的一個新方法.它可以搜尋你自己的或全域性的索引,也可以Crawl自己的網頁或啟動分散式Crawling等.

授權協議: GPL
開發語言: Java Perl
作業系統: 跨平臺

特點:基於P2P的分散式Web搜尋引擎


 Python爬蟲 

18.PyRailgun


這是一個非常簡單易用的抓取工具。支援抓取javascript渲染的頁面的簡單實用高效的python網頁爬蟲抓取模組

授權協議: MIT
開發語言: Python
作業系統: 跨平臺 Windows Linux OS X

特點:簡潔、輕量、高效的網頁抓取框架

備註:此軟體也是由國人開放

github下載:https://github.com/princehaku...


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

特點:支援多機分散式下載, 支援網站定向下載


22.Methabot


Methabot 是一個經過速度優化的高可配置的 WEB、FTP、本地檔案系統的爬蟲軟體。

授權協議: 未知
開發語言: C/C++
作業系統: Windows Linux
特點:過速度優化、可抓取WEB、FTP及本地檔案系統
原始碼:http://www.oschina.net/code/t...

C#爬蟲


24.Sinawler


國內第一個針對微博資料的爬蟲程式!原名“新浪微博爬蟲”。

登入後,可以指定使用者為起點,以該使用者的關注人、粉絲為線索,延人脈關係蒐集使用者基本資訊、微博資料、評論資料。

該應用獲取的資料可作為科研、與新浪微博相關的研發等的資料支援,但請勿用於商業用途。該應用基於.NET2.0框架,需SQL SERVER作為後臺資料庫,並提供了針對SQL Server的資料庫指令碼檔案。

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

本程式版權歸作者所有。你可以免費: 拷貝、分發、呈現和表演當前作品,製作派生作品。 你不可將當前作品用於商業目的。

5.x版本已經發布! 該版本共有6個後臺工作執行緒:爬取使用者基本資訊的機器人、爬取使用者關係的機器人、爬取使用者標籤的機器人、爬取微博內容的機器人、爬取微博評論的機器人,以及調節請求頻率的機器人。更高的效能!最大限度挖掘爬蟲潛力! 以現在測試的結果看,已經能夠滿足自用。

本程式的特點:


6個後臺工作執行緒,最大限度挖掘爬蟲效能潛力!

介面上提供引數設定,靈活方便

拋棄app.config配置檔案,自己實現配置資訊的加密儲存,保護資料庫帳號資訊

自動調整請求頻率,防止超限,也避免過慢,降低效率

任意對爬蟲控制,可隨時暫停、繼續、停止爬蟲

良好的使用者體驗


授權協議: GPLv3
開發語言: C# .NET
作業系統: Windows


26.Web Crawler


mart and Simple Web Crawler是一個Web爬蟲框架。整合Lucene支援。該爬蟲可以從單個連結或一個連結陣列開始,提供兩種遍歷模式:最大迭代和最大深度。可以設定 過濾器限制爬回來的連結,預設提供三個過濾器ServerFilter、BeginningPathFilter和 RegularExpressionFilter,這三個過濾器可用AND、OR和NOT聯合。在解析過程或頁面載入前後都可以加監聽器。介紹內容來自Open-Open

開發語言: Java
作業系統: 跨平臺
授權協議: LGPL

特點:多執行緒,支援抓取PDF/DOC/EXCEL等文件來源


28.OpenWebSpider


OpenWebSpider是一個開源多執行緒Web Spider(robot:機器人,crawler:爬蟲)和包含許多有趣功能的搜尋引擎。

授權協議: 未知
開發語言: PHP
作業系統: 跨平臺

特點:開源多執行緒網路爬蟲,有許多有趣的功能


30.ThinkUp


ThinkUp 是一個可以採集推特,facebook等社交網路資料的社會媒體視角引擎。通過採集個人的社交網路賬號中的資料,對其存檔以及處理的互動分析工具,並將資料圖形化以便更直觀的檢視。

640?wx_fmt=png

授權協議: GPL
開發語言: PHP
作業系統: 跨平臺
github原始碼:https://github.com/ThinkUpLLC...

特點:採集推特、臉譜等社交網路資料的社會媒體視角引擎,可進行互動分析並將結果以視覺化形式展現


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款可用來抓資料的開源爬蟲軟體工具

∑編輯 | Gemini

來源 | 知乎 資料分析師

640?wx_fmt=png

演算法數學之美微信公眾號歡迎賜稿

稿件涉及數學、物理、演算法、計算機、程式設計等相關領域,經採用我們將奉上稿酬。

投稿郵箱:math_alg@163.com

相關文章