天天看點

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

網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在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緩存資訊。

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

https://yqfile.alicdn.com/ff9382c0477dd601763ab5864d18aa2b1d362a2a.png

" >

heritrix系統架構圖

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

https://yqfile.alicdn.com/3c49d8d76284ab13988f969d7752da9f5056dc4d.png" >

heritrix處理一個url的流程

二、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上浪費時間了。

特點:

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]

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

spider是:

一個高度可配置和和可定制web爬蟲

lgpl開源許可下開發

100%純java實作

您可以使用它來:

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

傳出或内部連結檢查

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

下載下傳整修網站

通過編寫jspider插件實作任何功能.

六、spindle

spindle是一個建構在lucene工具包之上的web索引/搜尋工具.它包括一個用于建立索引的http spider和一個用于搜尋這些索引的搜尋類。spindle項目提供了一組jsp标簽庫使得那些基于jsp的站點不需要開發任何java類就能夠增加搜尋功能。

七、arachnid

arachnid是一個基于java的web spider架構.它包含一個簡單的html剖析器能夠分析包含html内容的輸入流.通過實作arachnid的子類就能夠開發一個簡單的web spiders并能夠在web站上的每個頁面被解析之後增加幾行代碼調用。 arachnid的下載下傳包中包含兩個spider應用程式例子用于示範如何使用該架構。

八、larm

larm能夠為jakarta lucene搜尋引擎架構的使用者提供一個純java的搜尋解決方案。它包含能夠為檔案,資料庫表格建立索引的方法和為web站點建索引的爬蟲。

九、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,可以通過自由的擴充對外提供的接口,并通過配置檔案注入的方式,基本上能實作對所有的網頁都正确的解析和抓取。

十一、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。

十二、itsucks

itsucks是一個java web爬蟲開源項目。可靈活定制,支援通過下載下傳模闆和正規表達式來定義下載下傳規則。提供一個控制台和swing gui操作界面。

功能特性:

多線程

正規表達式

儲存/載入的下載下傳工作

線上幫助

http/https 支援

http 代理 支援

http身份驗證

cookie 支援

可配置的user agent

連接配接限制

配置http響應代碼的行為

帶寬限制

gzip壓縮

十三、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 釋出

十五、ex-crawler

ex-crawler 是一個網頁爬蟲,采用 java 開發,該項目分成兩部分,一個是守護程序,另外一個是靈活可配置的 web 爬蟲。使用資料庫存儲網頁資訊。

ex-crawler分成三部分(crawler daemon,gui client和web搜尋引擎),這三部分組合起來将成為一個靈活和強大的爬蟲和搜尋引擎。其中web搜尋引擎部分采用php開發,并包含一個内容管理系統cms用于維護搜尋引擎。

十六、crawler

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

十七、encog

encog是一個進階神經網絡和機器人/爬蟲開發類庫。encog提供的這兩種功能可以單獨分開使用來建立神經網絡或http機器人程式,同時encog還支援将這兩種進階功能聯合起來使用。encog支援建立前饋神經網絡、hopfield神經網絡、自組織圖。

encog提供進階http機器人/爬蟲程式設計功能。支援将多線程爬蟲産生的内容存在記憶體或資料庫中。支援htm解析和進階表單與 cookie 處理。

encog 是一種先進的機器學習架構,它支援多種先進的算法,以及支援類正常化和處理資料。機器學習算法,如支援向量機,人工神經網絡,遺傳程式設計,貝葉斯網絡,隐馬爾可夫模型,遺傳程式設計和遺傳算法的支援。大多數encog教育訓練algoritms是多線程的,很好地擴充到多核硬體。encog還可以使用一個gpu,以進一步加快處理時間。一個基于gui的工作台也提供幫助模型和火車機器學習算法。自2008年以來encog一直在積極發展.

encog 支援多種語言,包括c# java 和c