1. 程式人生 > >玩大資料一定用得到的19款Java開源Web爬蟲

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

Heritrix

Heritrix系統框架圖

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

特點:

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外掛實現任何功能.

六、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的使用主要分為兩個步驟:

  1. 實現一個繼承自WebCrawler的爬蟲類;
  2. 通過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

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

十八、Crawljax

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

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

相關推薦

資料一定得到的19Java開源Web爬蟲

網路爬蟲(又被稱為網頁蜘蛛,網路機器人,在FOAF社群中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。另外一些不常使用的名字還有螞蟻、自動索引、模擬程式或者蠕蟲。 今天將為大家介紹19款Java開源Web爬蟲,需要的小夥伴

Hadoop和資料最炫目的60頂級開源工具

說到處理大資料的工具,普通的開源解決方案(尤其是Apache Hadoop)堪稱中流砥柱。弗雷斯特調研公司的分析師Mike Gualtieri最近預測,在接下來幾年,“100%的大公司”會採用Hadoop。Market Research的一份報告預測,到2011年,Hadoop市場會以58%的年複合

定時刪除伺服器檔案--FTP管理員一定著的軟體

        近來單位新開了個FTP伺服器,各位管理員都知道的,檔案多了就得定時刪除啊,網上找了一圈,倒是有個幾個軟體可以用,但是總覺得效果不是很好,時靈時不靈的。只好痛下決心,自己做一個啦,小弟用的依舊是老掉牙的VC++6.0,不過軟體能用

ProxyApi-資料採集的IP代理池

用於大資料採集用的代理池 在資料採集的過程中,最需要的就是一直變化的代理ip。 自建adsl為問題是隻有一個區域的IP。 買的代理存在的問題是不穩定,影響採集效率。 雲vps不允許安裝花生殼等,即使有花生殼,它的解析也不及時,跟不上3分鐘變一次。 本專案的作用是將目前的雲vps,安裝代理軟體,然後使用指令碼每

入門資料一定要掌握的知識點

大資料已經成為時代發展的趨勢,很多人紛紛選擇學習大資料,想要進入大資料行業。大資料技術體系龐大,包括的知識較多,系統的學習大資料可以讓你全面掌握大資料技能。學習大資料需要掌握哪些知識?1、學習大資料首先要學習Java基礎怎樣進行大資料學習的快速入門?學大資料課程之前要先學習一種計算機程式語言。Java是大資料

複製貼上資料系列教程說明

0x00 教程簡介 本系列課是一套只需要複製貼上就能玩起大資料的教程,甚至不需要思考就能獨立完成專案。 0x01 教程初衷 1.讓小夥伴們學習到更多 小白都可以通過複製粘貼出成品, 讓你成就感爆棚

DE01複製貼上資料系列教程之詳細說明

0x00 文章內容 標題說明 教程 … 0x01 標題說明 1.D001複製貼上玩大資料之資料視覺化 D:大資料系列 J:Java系列 P:Python系列 001:教程順序,002,003…

D001.1複製貼上資料之虛擬機器的安裝

0x00 教程內容 安裝虛擬機器 NAT網路配置 0x01 安裝虛擬機器 1.獲取虛擬機器(Centos7) 官網下載() 關注公眾號:邵奈一(待補充連結),回覆:Centos7。自動獲取百度雲

資料一定會從ABC裡最先掉隊?

人工智慧(AI),大資料(big data)和雲端計算(cloud computing)三大技術被認為是當今網際網路爭奪的關鍵點。而三大技術中中爭議最多的在於大資料技術,被誇大的效果和侷限性的應用,很可能會讓大資料成為ABC三大技術中最先掉隊的一個。 01 ABC的格局 2010年,工業和資

雲端計算讓資料分析變更簡單、快捷

網際網路、雲端計算以及大資料,如今成了三個密不可分的詞彙。一般而言,一家網際網路公司一定同時是資料公司,反之,不能從資料中獲取利益的網際網路公司一定不是一個好的雲端計算應用者。更進一步,挖掘資料價值很多企業都會做,但如果不能用最低成本得到資料價值,企業同樣活不下去。把資料以低

這8份前沿Paper+Code ,你一定上!

來源:PaperWeekly 本文長度為600字,建議閱讀5分鐘 本文為你列出八篇自然語言處理、計算機視覺及機器學習領域前沿的論文及程式碼。 [ 自然語言處理 ] SLING: A framework for frame semantic parsing @paperweekly 推薦 #Seman

資料】InfoWorld的2018年最佳開源資料平臺獎公佈

目錄 TiDB Neo4j Apache Spark 儘管新的產品層出不窮,Apache Spark在資料分析領域仍然佔據著舉足輕重的地位。如果你需要從事分散式計算、資料科學或者機器學習相關的工作,就使用Apache

Scala 資料Spark生態圈必備 Scala+Java混編

Scala 大資料Spark生態圈必備 Scala+Java混編 連結: https://pan.baidu.com/s/1AO2nVZdaSRZf8d8LRE3_2Q 提取碼: 7hbe    第1章 初識Scala 瞭解Scala是什麼,學習Scala的意義

國內最火的10Java開源項目,都是國人開發,CMS居多

數字 per 敏捷 但是 mst 代碼量 身份證號碼 項目 tee 國內的開源環境已經相當好,但是國內開發註重是應用,創新有但不多,從榜單可以看出,專門搞技術的還是少數,結合項目實踐的站大多數,分享給你們,架構的時候可以參考這些解決方案,傳送門:gogeeks.cn

【網站】國內最火的10Java開源專案,都是國人開發,CMS居多

國內的開源環境已經相當好,但是國內開發注重是應用,創新有但不多,從榜單可以看出,專門搞技術的還是少數,結合專案實踐的站大多數,分享給你們,架構的時候可以參考這些解決方案,傳送門:gogeeks.cn zheng徵專案(stars 5.6k) 基於Spring+Spring

10超好開源資料分析工具

現如今,整個網際網路已經進入大資料時代,“大資料”一詞的重點現也已經不僅在於資料規模的定義,它更代表著資訊科技發展進入了一個新的里程,代表著爆炸性的資料資訊給傳統的計算技術和資訊科技帶來的技術挑戰和困難,代表著大資料處理所需的新的技術和方法,也代表著大資料分析和應用所帶來的

資料人都該知道的 75 個專業術語,你一定看!

接下來繼續瞭解另外 50 個大資料術語。   Apache 軟體基金會(ASF) 提供了許多大資料的開源專案,目前有 350 多個。解釋完這些專案需要耗費大量時間,所以我只挑選解釋了一些流行術語。     Apache Kafka  

從10億到百億規模促,雲效轉項目管理

信息 渠道 很多 理論 lis www. 周報 不出 綜合 摘要: 一個大的商業項目,如何能做到如期完工並準時交付,是有一套標準化的流程和體系來支撐的。項目管理並不是一個陌生的話題,就像《人月神話》裏面提到的阿波羅計劃、曼哈頓工程都是非常經典的案例。對於很多新同學來講,對項

掃盲貼|一頓飯的時間為你講透資料

燕飛,Kyligence 大資料老司機,擁有超過15年的大資料/資料倉庫領域從業經驗,對大資料/資料倉庫的建設規劃、架構設計、技術體系、方法論及主流廠商的產品和解決方案,均有深入的研究和實踐。 【開胃菜】 十五年前,剛開始工作,從帝都回老家。 某長輩和藹的問我:“工

學習資料什麼語言比較合適?不容錯過!

最近來有位同學前來諮詢,他留言說:很喜歡大資料,也看好大資料的前景,但是自己沒有Java基礎,不確信自己有沒有能力學好大資料,自信心嚴重不足。其實,這種情況並不少見,很多同學都在大資料大門前徘徊,承受各種困擾折磨,而顧慮中的第一攔路虎便是Java。所以好程式設計師今日就和大家分析下,學習大資料一定要學Java