首頁  >  文章  >  Java  >  玩大數據一定用得到的 19 款 Java 開源 Web 爬蟲

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

黄舟
黄舟原創
2017-01-18 15:20:141765瀏覽

Java程式設計語言

java 是一種可以撰寫跨平台應用軟體的物件導向的程式設計語言,是由Sun Microsystems公司於1995年5月推出的Java程式設計語言和Java平台(即JavaEE( j2ee), JavaME(j2me), JavaSE(j2se))的總稱。


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

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

玩大數據一定用得到的 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快取資訊。


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

Heritrix系統框架圖

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

heritrix處理一個url的流程

二、WebSPHINX

heritrix處理一個url的流程

Web 爬蟲 ( 也叫作機器人或蜘蛛 ) 是可以自動瀏覽與處理 Web 頁面的程式。 WebSPHINX 由兩個部分組成:爬蟲工作平台和 WebSPHINX 類別包。

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

WebSPHINX – 用途

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

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

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

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

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

詳細介紹可見>>>

三、WebLech

WebLech是功能強大的Web網站下載與鏡像工具。它支援按功能需求來下載web站點並能夠盡可能模仿標準網頁瀏覽器的行為。 WebLech有一個功能控制台並採用多執行緒操作。

WebLech是一個功能強大的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外掛程式實現任何功能.

該專案首頁: 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 支援

配置的User Agent

連線限制

設定HTTP回應碼的行為

頻寬限制

Gzip壓縮

該專案首頁 :http://itsucks.sourceforge.net/

該專案首頁 :http://itsucks.sourceforge.net/

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 發布

asser

開源地址是一個網頁爬蟲,採用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的網路應用程式透過觸發事件和在表單中填充資料。

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

此專案首頁 :http://crawljax.com/

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

開源位址: https://github.com/crawljax/craLan

🜟以上就是玩大數據一定用得到的19 款Java 開源Web 爬蟲的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn