玩大數據一定用得到的19款 Java 開源 Web 爬蟲

2020-12-01 開源中國

網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在FOAF社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取全球資訊網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。

今天將為大家介紹19款Java開源Web爬蟲,需要的小夥伴們趕快收藏吧。

一、Heritrix

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

Heritrix 是個「Archival Crawler」——來獲取完整的、精確的、站點內容的深度複製。包括獲取圖像以及其他非文本內容。抓取並存儲相關的內容。對內容來者不拒,不對頁面進行內容上的修改。重新爬行對相同的URL不針對先前的進行替換。爬蟲主要通過Web用戶界面啟動、監控和調整,允許彈性的定義要獲取的url。

Heritrix是按多線程方式抓取的爬蟲,主線程把任務分配給Teo線程(處理線程),每個Teo線程每次處理一個URL。Teo線程對每個URL執行一遍URL處理器鏈。URL處理器鏈包括如下5個處理步驟。

(1)預取鏈:主要是做一些準備工作,例如,對處理進行延遲和重新處理,否決隨後的操作。

(2)提取鏈:主要是下載網頁,進行DNS轉換,填寫請求和響應表單。

(3)抽取鏈:當提取完成時,抽取感興趣的HTML和JavaScript,通常那裡有新的要抓取的URL。

(4)寫鏈:存儲抓取結果,可以在這一步直接做全文索引。Heritrix提供了用ARC格式保存下載結果的ARCWriterProcessor實現。

(5)提交鏈:做和此URL相關操作的最後處理。檢查哪些新提取出的URL在抓取範圍內,然後把這些URL提交給Frontier。另外還會更新DNS緩存信息。

Heritrix系統框架圖

heritrix處理一個url的流程

二、WebSPHINX

WebSPHINX 是一個 Java 類包和 Web 爬蟲的交互式開發環境。 Web 爬蟲 ( 也叫作機器人或蜘蛛 ) 是可以自動瀏覽與處理 Web 頁面的程序。 WebSPHINX 由兩部分組成:爬蟲工作平臺和 WebSPHINX 類包。

WebSPHINX 是一個 Java 類包和 Web 爬蟲的交互式開發環境。 Web 爬蟲 ( 也叫作機器人或蜘蛛 ) 是可以自動瀏覽與處理 Web 頁面的程序。 WebSPHINX 由兩部分組成:爬蟲工作平臺和 WebSPHINX 類包。

WebSPHINX – 用途

1.可視化顯示頁面的集合

2.下載頁面到本地磁碟用於離線瀏覽

3.將所有頁面拼接成單個頁面用於瀏覽或者列印

4.按照特定的規則從頁面中抽取文本字符串

5.用Java或Javascript開發自定義的爬蟲

詳細介紹可見>>>

三、WebLech

WebLech是一個功能強大的Web站點下載與鏡像工具。它支持按功能需求來下載web站點並能夠儘可能模仿標準Web瀏覽器的行為。WebLech有一個功能控制臺並採用多線程操作。

WebLech是一個功能強大的Web站點下載與鏡像免費開源工具。它支持按功能需求來下載web站點並能夠儘可能模仿標準Web瀏覽器的行為。WebLech有一個功能控制臺並採用多線程操作。

這款爬蟲足夠簡單,如果初學如果編寫爬蟲,可做入門參考。所以我選擇了用這個爬蟲開始我的研究。如果只是做要求不高的應用,也可試試。如果想找一款功能強大,就別在WebLech上浪費時間了。

該項目主頁: http://weblech.sourceforge.net/

特點:

1)開源,免費

2)代碼是用純Java寫的,可以在任何支持Java的平臺上也行

3)支持多線程下載網頁

4)可維持網頁間的連結信息

5)可配置性強: 深度優先或寬度優先爬行網頁 可定製URL過濾器,這樣就可以按需要爬行單個web伺服器,單個目錄或爬行整 個WWW網絡 可設置URL的優先級,這樣就可以優先爬行我們感興趣或重要的網頁 可記錄斷點時程序的狀態,一邊重新啟動時可接著上次繼續爬行。

四、Arale

Arale主要為個人使用而設計,而沒有像其它爬蟲一樣是關注於頁面索引。Arale能夠下載整個web站點或來自web站點的某些資源。Arale還能夠把動態頁面映射成靜態頁面。

五、JSpider

JSpider:是一個完全可配置和定製的Web Spider引擎.你可以利用它來檢查網站的錯誤(內在的伺服器錯誤等),網站內外部連結檢查,分析網站的結構(可創建一個網站地圖),下載整個Web站點,你還可以寫一個JSpider插件來擴展你所需要的功能。

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

jspider [URL] [ConfigName]

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

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

Spider是:

一個高度可配置和和可定製Web爬蟲

LGPL開源許可下開發

100%純Java實現

您可以使用它來:

檢查您網站的錯誤(內部伺服器錯誤, …)

傳出或內部連結檢查

分析你網站的結構(創建一個sitemap, …)

下載整修網站

通過編寫JSpider插件實現任何功能.

該項目主頁: http://j-spider.sourceforge.net/

六、spindle

spindle是一個構建在Lucene工具包之上的Web索引/搜索工具.它包括一個用於創建索引的HTTP spider和一個用於搜索這些索引的搜索類。spindle項目提供了一組JSP標籤庫使得那些基於JSP的站點不需要開發任何Java類就能夠增加搜索功能。

七、Arachnid

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

該項目主頁: http://arachnid.sourceforge.net/

八、LARM

LARM能夠為Jakarta Lucene搜尋引擎框架的用戶提供一個純Java的搜索解決方案。它包含能夠為文件,資料庫表格建立索引的方法和為Web站點建索引的爬蟲。

該項目主頁: http://larm.sourceforge.net/

九、JoBo

JoBo是一個用於下載整個Web站點的簡單工具。它本質是一個Web Spider。與其它下載工具相比較它的主要優勢是能夠自動填充form(如:自動登錄)和使用cookies來處理session。JoBo還有靈活的下載規則(如:通過網頁的URL,大小,MIME類型等)來限制下載。

十、snoics-reptile

1、snoics-reptile是什麼?

是用純Java開發的,用來進行網站鏡像抓取的工具,可以使用配製文件中提供的URL入口,把這個網站所有的能用瀏覽器通過GET的方式獲取到的資源全部抓取到本地,包括網頁和各種類型的文件,如:圖片、flash、mp3、zip、rar、exe等文件。可以將整個網站完整地下傳至硬碟內,並能保持原有的網站結構精確不變。只需要把抓取下來的網站放到web伺服器(如:Apache)中,就可以實現完整的網站鏡像。

2、現在已經有了其他的類似的軟體,為什麼還要開發snoics-reptile?

因為有些在抓取的過程中經常會出現錯誤的文件,而且對很多使用javascript控制的URL沒有辦法正確的解析,而snoics-reptile通過對外提供接口和配置文件的形式,對特殊的URL,可以通過自由的擴展對外提供的接口,並通過配置文件注入的方式,基本上能實現對所有的網頁都正確的解析和抓取。

該項目主頁: http://www.blogjava.net/snoics

十一、Web-Harvest

Web-Harvest是一個Java開源Web數據抽取工具。它能夠收集指定的Web頁面並從這些頁面中提取有用的數據。Web-Harvest主要是運用了像XSLT,XQuery,正則表達式等這些技術來實現對text/xml的操作。

Web-Harvest 是一個用Java 寫的開源的Web 數據提取工具。它提供了一種從所需的頁面上提取有用數據的方法。為了達到這個目的,你可能需要用到如XSLT,XQuery,和正則表達式等操作text/xml 的相關技術。Web-Harvest 主要著眼於目前仍佔大多數的基於HMLT/XML 的頁面內容。另一方面,它也能通過寫自己的Java 方法來輕易擴展其提取能力。

Web-Harvest 的主要目的是加強現有數據提取技術的應用。它的目標不是創造一種新方法,而是提供一種更好地使用和組合現有方法的方式。它提供了一個處理器集用於處理數據和控制流程,每一個處理器被看作是一個函數,它擁有參數和執行後同樣有結果返回。而且處理是被組合成一個管道的形式,這樣使得它們可以以鏈式的形式來執行,此外為了更易於數據操作和重用,Web-Harvest 還提供了變量上下方用於存儲已經聲明的變量。

web-harvest 啟動,可以直接雙擊jar包運行,不過該方法不能指定web-harvest java虛擬機的大小。第二種方法,在cmd下切到web-harvest的目錄下,敲入命令「java -jar -Xms400m webharvest_all_2.jar」 即可啟動並設置起java虛擬機大小為400M。

該項目主頁 :http://web-harvest.sourceforge.net

十二、ItSucks

ItSucks是一個Java Web爬蟲開源項目。可靈活定製,支持通過下載模板和正則表達式來定義下載規則。提供一個控制臺和Swing GUI操作界面。

功能特性:

  • 多線程

  • 正則表達式

  • 保存/載入的下載工作

  • 在線幫助

  • HTTP/HTTPS 支持

  • HTTP 代理 支持

  • HTTP身份驗證

  • Cookie 支持

  • 可配置的User Agent

  • 連接限制

  • 配置HTTP響應代碼的行為

  • 帶寬限制

  • Gzip壓縮

該項目主頁 :http://itsucks.sourceforge.net/

十三、Smart and Simple Web Crawler

Smart and Simple Web Crawler是一個Web爬蟲框架。集成Lucene支持。該爬蟲可以從單個連結或一個連結數組開始,提供兩種遍歷模式:最大迭代和最大深度。可以設置 過濾器限制爬回來的連結,默認提供三個過濾器ServerFilter、BeginningPathFilter和 RegularExpressionFilter,這三個過濾器可用AND、OR和NOT聯合。在解析過程或頁面加載前後都可以加監聽器。

十四、Crawler4j

crawler4j是Java實現的開源網絡爬蟲。提供了簡單易用的接口,可以在幾分鐘內創建一個多線程網絡爬蟲。

crawler4j的使用主要分為兩個步驟:

實現一個繼承自WebCrawler的爬蟲類;

通過CrawlController調用實現的爬蟲類。

WebCrawler是一個抽象類,繼承它必須實現兩個方法:shouldVisit和visit。其中:

shouldVisit是判斷當前的URL是否已經應該被爬取(訪問);

visit則是爬取該URL所指向的頁面的數據,其傳入的參數即是對該web頁面全部數據的封裝對象Page。

另外,WebCrawler還有其它一些方法可供覆蓋,其方法的命名規則類似於Android的命名規則。如getMyLocalData方法可以返回WebCrawler中的數據;onBeforeExit方法會在該WebCrawler運行結束前被調用,可以執行一些資源釋放之類的工作。

許可

Copyright (c) 2010-2015 Yasser Ganjisaffar

根據 Apache License 2.0 發布

開源地址: https://github.com/yasserg/crawler4j

十五、Ex-Crawler

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

Ex-Crawler分成三部分(Crawler Daemon,Gui Client和Web搜尋引擎),這三部分組合起來將成為一個靈活和強大的爬蟲和搜尋引擎。其中Web搜尋引擎部分採用PHP開發,並包含一個內容管理系統CMS用於維護搜尋引擎。

該項目主頁 :http://ex-crawler.sourceforge.net/joomla/

十六、Crawler

Crawler是一個簡單的Web爬蟲。它讓你不用編寫枯燥,容易出錯的代碼,而只專注於所需要抓取網站的結構。此外它還非常易於使用。

該項目主頁: http://projetos.vidageek.net/crawler/crawler/

十七、Encog

Encog是一個高級神經網絡和機器人/爬蟲開發類庫。Encog提供的這兩種功能可以單獨分開使用來創建神經網絡或HTTP機器人程序,同時Encog還支持將這兩種高級功能聯合起來使用。Encog支持創建前饋神經網絡、Hopfield神經網絡、自組織圖。

Encog提供高級HTTP機器人/爬蟲編程功能。支持將多線程爬蟲產生的內容存在內存或資料庫中。支持HTM解析和高級表單與 Cookie 處理。

Encog 是一種先進的機器學習框架,它支持多種先進的算法,以及支持類正常化和處理數據。機器學習算法,如支持向量機,人工神經網絡,遺傳編程,貝葉斯網絡,隱馬爾可夫模型,遺傳編程和遺傳算法的支持。大多數Encog培訓algoritms是多線程的,很好地擴展到多核硬體。Encog還可以使用一個GPU,以進一步加快處理時間。一個基於GUI的工作檯也提供幫助模型和火車機器學習算法。自2008年以來Encog一直在積極發展.

Encog 支持多種語言,包括C# Java 和C

在GitHub上有各種語言版本的原始碼.

http://www.heatonresearch.com/encog

https://github.com/encog

十八、Crawljax

Crawljax是一個開源Java工具用於Ajax Web應用程式的自動化抓取和測試。Crawljax能夠抓取/爬行任何基於Ajax的Web應用程式通過觸發事件和在表單中填充數據。

收錄時間:2011-05-18 09:50:32

該項目主頁 :http://crawljax.com/

開源地址: https://github.com/crawljax/crawljax

稿源:51cto , via:36大數據

作者:Optimus Prime

相關焦點

  • 數據從業者必讀:抓取了一千億個網頁後我才明白,爬蟲一點都不簡單
    編者按:網際網路上有浩瀚的數據資源,要想抓取這些數據就離不開爬蟲。鑑於網上免費開源的爬蟲框架多如牛毛,很多人認為爬蟲定是非常簡單的事情。但是如果你要定期上規模地準確抓取各種大型網站的數據卻是一項艱巨的挑戰,其中包括網站的格式經常會變、架構必須能靈活伸縮應對規模變化同時要保持性能,與此同時還要挫敗網站反機器人的手段以及維護數據質量。
  • 網頁爬蟲及其用到的算法和數據結構
    網絡爬蟲,是一種按照一定的規則,自動的抓取全球資訊網信息的程序或者腳本。網絡爬蟲是搜尋引擎系統中十分重要的組成部分,它負責從互 聯網中搜集網頁,採集信息,這些網頁信息用於建立索引從而為搜索 引擎提供支持,它決定著整個引擎系統的內容是否豐富,信息是否即 時,因此其性能的優劣直接影響著搜尋引擎的效果。
  • 惡意爬蟲抓取信息,「大數據」營銷公司如何販賣個人隱私?
    近日,新京報記者調查發現:有大數據營銷公司靠銷售爬蟲工具獲利,電商平臺商家數據遭爬取;還有公司稱可以獲取任意網頁及APP訪客的手機號;專家稱其屬於惡意爬取,涉嫌犯罪。一旦涉及某一方發生洩露,通過抓取這個數據包便可以解析出來用戶的敏感信息。網絡爬蟲則分為合法爬蟲和惡意爬蟲兩種。一些所謂的大數據公司本身沒有數據來源,而是通過爬蟲手段獲取他人的數據。在網絡空間,數據戰爭已進入白熱化。
  • 爬蟲技術涉案大數據分析及法律解讀
    爬蟲技術涉案大數據分析及法律解讀 虞元堅 發表於 2021-01-12 16:39:26   爬蟲技術涉案大數據分析及法律解讀 爬蟲技術作為一種前端獲取網站信息數據的技術
  • 2018 年度新增開源軟體排行榜之國產 TOP 50
    與常見監控系統不同,Overwatch 使用設計良好的圖形(使用 D3 強制布局)用於可視化數據。項目主頁:https://github.com/imdada/overwatch開源協議:BSD開發語言:TypeScript所屬公司:京東jfinal-undertow 用於開發、部署由 jfinal 開發的 web 項目。
  • Go+iris吊打Java+SpringBoot,是Java老了嗎?且慢,Vert.x有話說
    前文回顧之前做過一個測評,是用Go語言的iris框架與Java的SpringBoot框架做了個性能對比,測試了三項,結果SpringBoot全線潰敗,詳情見:Go語言為什麼這麼火?Go+Iris vs Java+SpringBoot 為您揭曉答案那個結果很容易給人一個錯覺:是java老了嗎?當然不是!
  • 網絡爬蟲竊取數據,技術工具遭遇司法拷問
    「網絡爬蟲」是一個科技感十足的名詞,在玩代碼的圈子裡,這指的是一個數據爬取工具,被編程人員用在獲取網際網路上存在的大量信息。不過,一些網際網路公司通過該工具強行侵入其它網站,隨意竊取數據的行為是違法的。網上出現了這樣一個段子,「爬蟲玩得好,監獄進的早。數據玩的溜,牢飯吃個夠。」
  • 爬蟲玩的好,監獄進的早?
    在消費金融科技領域中,大數據風控業務已成為關鍵環節。但當下大數據風控行業卻迎來多事之秋,多家為網際網路小貸公司、個人消費類業務金融等公司提供服務的大數據風控領域企業被抓,他們旗下的爬蟲業務先後都因「涉黑」被暫停營業。
  • 玩「爬蟲」可能觸犯的三宗罪
    數據玩得溜,牢飯吃個夠。 自2019年9月以來,多家知名公司相關人員被抓或被調查,這些機構均涉及大數據風控業務和爬蟲技術的應用。由此,大數據業務的合規合法問題、爬蟲技術的合理應用問題,引起了大數據和金融科技行業的特別重視。 爬蟲技術違規嗎?開展業務到底存在哪些風險點?
  • 開課吧Python:Python爬蟲是什麼?爬蟲工程師薪資怎麼樣?
    Python爬蟲是由Python程序開發的網絡爬蟲(webspider,webrobot),是按照一定規則自動抓取全球資訊網信息的程序或腳本。其實一般是通過程序在網頁上獲取你想要的數據,也就是自動抓取數據。為什麼需要用爬蟲?
  • Python爬蟲工具篇 - 必會用的6款Chrome插件
    Python爬蟲工具篇 - 必會用的6款Chrome插件 在日常 PC 端的Python爬蟲過程工作中,Chrome 瀏覽器是我們常用的一款工具。鑑於 Chrome 瀏覽器的強大,Chrome 網上應用商店很多強大的插件可以幫助我們快速高效地進行數據爬蟲。
  • Python網頁爬蟲工具有哪些?
    一個真實的項目,一定是從獲取數據開始的。不管文本處理,機器學習和數據發掘,都需求數據,除了通過一些途徑購買或者下載的專業數據外,常常需求我們自己著手爬數據,爬蟲就顯得分外重要。那麼,Python網頁爬蟲東西有哪些呢?
  • Python爬蟲並自製新聞網站,太好玩了
    來源 | 凹凸數據(ID:alltodata)我們總是在爬啊爬,爬到了數據難道只是為了做一個詞雲嗎?當然不!這次我就利用flask為大家呈現一道小菜。Flask是python中一個輕量級web框架,相對於其他web框架來說簡單,適合小白練手。使用Flask+爬蟲,教大家如何實時展示自己爬下來的數據到網頁上。
  • 推薦四個網絡爬蟲抓包神器
    目前市面上比較不錯的網絡爬蟲抓包工具有Fiddler、charles、Anyproxy和mitmproxy等。有人可能會問,何為網絡爬蟲?首先,網絡爬蟲它是一種程序,它的樣子如同一個大蜘蛛.它將網絡上全部的連結和內容進行查索,建立相關的資料庫並引入。
  • 被開源綁架的開源項目開發者
    項目開源之初,他們都是 Twitter 的員工。兩人做這個項目也是出於對開源精神的擁護。雖然項目很有挑戰,但隨著 Bootstrap 知名度的提高,很多知名網站都用上了這個框架,如 Green Day、歐巴馬的白宮網站等。Jacob Thornton 和 Mark Otto 也逐漸積累了一些名氣。最重要的是,助人為樂的感覺確實還不錯。
  • 有這3個免費數據採集工具,不懂爬蟲代碼,也能輕鬆爬數據
    產品和運營在日常工作中,常常需要參考各種數據,來為決策做支持。但實際情況是,對於日常工作中的各種小決策,內部提供的數據有時還不足給予充分支持,外部的數據大部分又往往都是機構出具的行業狀況,並不能提供什麼有效幫助。於是產品和運營們往往要藉助爬蟲來抓取自己想要的數據。
  • Java 查找替換Excel數據
    概述本文介紹如何在Java程序中來查找並替換Excel中的數據。替換數據時,可設置新數據的樣式/格式等。使用工具工具:Free Spire.XLS for Java (免費版)註:可通過e-iceblue中文官網在Java產品板塊下載包,並解壓將lib文件夾下的jar文件導入java程序;或者通過maven倉庫下載導入。Jar導入效果:
  • 初學者如何用「python爬蟲」技術抓取網頁數據?
    在當今社會,網際網路上充斥著許多有用的數據。我們只需要耐心觀察並添加一些技術手段即可獲得大量有價值的數據。而這裡的「技術手段」就是指網絡爬蟲。 今天,小編將與您分享一個爬蟲的基本知識和入門教程:什麼是爬蟲?網絡爬蟲,也叫作網絡數據採集,是指通過編程從Web伺服器請求數據(HTML表單),然後解析HTML以提取所需的數據。
  • 天機數據否認涉足數據爬蟲,關聯透視寶擅長用戶行為數據採集
    天機數據表示,與大數據風控平臺相關負面稿件提及的金融風控、徵信和數據爬蟲業務相關的「天機」與「北京天機數測數據科技有限公司」(下稱「天機數測」)無任何關聯關係。天機數測過去從未涉及金融行業的風控、爬蟲等業務,未來也不會開展金融風控、徵信、數據爬蟲等方面工作。
  • 爬蟲一定要使用代理IP嗎?
    不論哪個行業,只要跟網際網路掛鈎,就肯定離不開大數據的支撐,網絡爬蟲應運而生。爬蟲工作者都知道代理IP對於爬蟲工作很重要,那麼,代理IP是不是不可或缺的呢?爬蟲一定要使用代理IP嗎?答案是否定的,假如需要爬取的數據不多,一次爬一個網站上的幾百篇文章內容,不使用代理ip也能很輕鬆的實現。但出現以下情況就一定需要用到代理IP。1.被爬網站有反爬蟲機制。如果使用一個IP反覆訪問一個網頁,就容易出現IP被限制,無法再對網站進行訪問,這時就需要用到代理IP。