基於java的分佈式爬蟲

分類

分佈式網絡爬蟲包含多個爬蟲,每一個爬蟲須要完成的任務和單個的爬行器相似,它們從互聯網上下載網頁,並把網頁保存在本地的磁盤,從中抽取URL並沿着這些URL的指向繼續爬行。因爲並行爬行器須要分割下載任務,可能爬蟲會將本身抽取的URL發送給其餘爬蟲。這些爬蟲可能分佈在同一個局域網之中,或者分散在不一樣的地理位置。git

根據爬蟲的分散程度不一樣,能夠把分佈式爬行器分紅如下兩大類:web

一、基於局域網分佈式網絡爬蟲:這種分佈式爬行器的全部爬蟲在同一個局域網裏運行,經過高速的網絡鏈接相互通訊。這些爬蟲經過同一個網絡去訪問外部互聯網,下載網頁,全部的網絡負載都集中在他們所在的那個局域網的出口上。因爲局域網的帶寬較高,爬蟲之間的通訊的效率可以獲得保證;可是網絡出口的總帶寬上限是固定的,爬蟲的數量會受到局域網出口帶寬的限制。算法

二、基於廣域網分佈式網絡爬蟲:當並行爬行器的爬蟲分別運行在不一樣地理位置(或網絡位置),咱們稱這種並行爬行器爲分佈式爬行器。例如,分佈式爬行器的爬蟲可能位於中國,日本,和美國,分別負責下載這三地的網頁;或者位於CHINANET,CERNET,CEINET,分別負責下載這三個網絡的中的網頁。分佈式爬行器的優點在於能夠子在必定程度上分散網絡流量,減少網絡出口的負載。若是爬蟲分佈在不一樣的地理位置(或網絡位置),須要間隔多長時間進行一次相互通訊就成爲了一個值得考慮的問題。爬蟲之間的通信帶寬多是有限的,一般須要經過互聯網進行通訊。網絡

大型分佈式網絡爬蟲體系結構圖

image

分佈式網絡爬蟲是一項十分複雜系統。須要考慮不少方面因素。性能能夠說是它這重要的指標。固然硬件層面的資源也是必須的。架構

架構

下面是項目的整體架構,第一個版本基於此方案來作。框架

上面的web層包括:控制檯、基本權限、監控展現等,還能夠根據須要再一步進行擴展。分佈式

核心層由控制者統一調度,將任務發給工人隊列中的工人進行爬取操做。各個結點動態的向監控模塊發送模塊狀態等信息,統一由展現層展現。oop

0.1版本架構圖

項目目標

衆推,開源版的今日頭條!性能

基於hadoop思惟的分佈式網絡爬蟲。測試

目前已經將fourinone、jeesite、webmagic整合進來,而且進一步進行改進。想最終作成一個基於設計器的動態可配置的分佈式爬蟲系統,這個是第一階段的目標。

項目目前狀況

目前項目進展狀況:

一、sourceer,能夠接入多種數據源,接口已經定義(加入builder封裝,可使用簡單爬蟲)。

二、web架構工程(web工程上傳並測試成功,權限、基礎框架改造,導入等已經錄成視頻,刪除activiti,刪除cms部分)。

三、分佈式框架研究(分佈式項目分包,添加部分註釋,測試單機單工人爬取)。

四、插件化整合。

五、文章等各類去重方式及算法(目前已實現bloomfilter,指紋算法去重,已經實現simhash,分詞算法(ansj))。

六、分類器測試(bayes,文本分類單機測試成功)。

項目地址:

(分佈式爬蟲)http://git.oschina.net/zongtui/zongtui-webcrawler

(去重過濾器)https://git.oschina.net/zongtui/zongtui-filter

(文本分類器)https://git.oschina.net/zongtui/zongtui-classifier

(文檔目錄)https://git.oschina.net/zongtui/zongtui-doc

項目界面:

啓動jetty,目前皮膚暫時還未換。

image

總結

目前項目正在進一步完善當中,但願能獲得你更多的意見!

相關文章
相關標籤/搜索