最新的毛片基地免费,国产国语一级毛片,免费国产成人高清在线电影,中天堂国产日韩欧美,中国国产aa一级毛片,国产va欧美va在线观看,成人不卡在线

一種基于可靠隊列服務(wù)的高效分布式爬蟲系統(tǒng)設(shè)計的制作方法

文檔序號:11177439閱讀:787來源:國知局
一種基于可靠隊列服務(wù)的高效分布式爬蟲系統(tǒng)設(shè)計的制造方法與工藝

本發(fā)明涉及計算機軟件領(lǐng)域,特別是涉及分布式信息抓取,行業(yè)數(shù)據(jù)積累使用場景。



背景技術(shù):

隨著信息技術(shù)的發(fā)展,人們獲取信息的方式也越來越精進,人們不再只是通過報紙和電視來獲取各種資訊信息,而是通過app應(yīng)用來查看app應(yīng)用提供商已經(jīng)歸納好的資訊信息。這些app應(yīng)用提供商中,當(dāng)然也包括大部分互聯(lián)網(wǎng)金融企業(yè)。爬?系統(tǒng),?稱作“網(wǎng)絡(luò)蜘蛛系統(tǒng)”是?種按照?定的規(guī)則?動的從萬維?中各個?站抓取信息的系統(tǒng)。互聯(lián)??融企業(yè)積累?業(yè)數(shù)據(jù)需要從?業(yè)相關(guān)站點抓取有價值的內(nèi)容信息,因此都需要建???的?套爬?系統(tǒng)。爬蟲系統(tǒng)利用萬維網(wǎng)及時抓取企業(yè)所需要的資訊信息,通過對不同的抓取目標(biāo)網(wǎng)站配置相應(yīng)規(guī)則來實現(xiàn)個性化內(nèi)容抓取。

爬?系統(tǒng)設(shè)計是否優(yōu)良主要看以下?個??:

(1)爬?系統(tǒng)的穩(wěn)定性,即是否存在單點故障;

(2)爬?系統(tǒng)的及時性,即站點新發(fā)布的內(nèi)容是否在要求的時間內(nèi)被系統(tǒng)抓取到;

(3)爬?系統(tǒng)的伸縮性,即當(dāng)需要爬取的站點增多或減少時,爬?系統(tǒng)是否能夠輕易地通過增加或減少系統(tǒng)資源(系統(tǒng)資源包括:進程數(shù),機器數(shù)量,外?帶寬等等)來適應(yīng)相應(yīng)的爬取壓?;

(4)爬?系統(tǒng)的可控性,即是否能夠?qū)χ匾炔煌恼军c分配適宜的系統(tǒng)資源,是否能通過配置來實現(xiàn)對不同站點的個性化抓?。?/p>

(5)爬?系統(tǒng)的有效監(jiān)控,即是否能夠有效監(jiān)控爬?系統(tǒng)的運?狀態(tài),包括:頁?解析錯誤,各站點的實時抓取數(shù)量,提供報警機制等等。

該發(fā)明從以上各個??著?,基于通過binlog?式實現(xiàn)的主從隊列服務(wù)創(chuàng)造出了?個?效,穩(wěn)定,可靠,可伸縮的分布式爬?系統(tǒng)。



技術(shù)實現(xiàn)要素:

本發(fā)明的目的是為了解決目前互聯(lián)網(wǎng)金融企業(yè)無法高效可靠地積累資訊數(shù)據(jù)的問題,設(shè)計出一種基于binlog主從隊列服務(wù),并且具有高穩(wěn)定性、及時性、高伸縮性、可控性的分布式爬蟲系統(tǒng)。

為了解決上述問題,本發(fā)明采用的技術(shù)方案是:總體上采用分布式系統(tǒng)架構(gòu)。系統(tǒng)整體可分成七大模塊:調(diào)度模塊、抓取及頁面解析模塊、附件處理模塊、圖片處理模塊、監(jiān)控模塊、配置平臺模塊、http代理模塊。

同時為實現(xiàn)合理的調(diào)度功能,系統(tǒng)的核心模塊:調(diào)度模塊和抓取及頁面解析模塊通過基于binlog實現(xiàn)主從邏輯的可靠隊列服務(wù)來進行通信。

進一步,所述調(diào)度模塊為爬蟲系統(tǒng)負(fù)責(zé)調(diào)度待抓取站點的模塊,不同的待抓取站點重要程度不同,調(diào)度的頻率和優(yōu)先級就存在差別;“通常重要度高的站點調(diào)度要頻繁一些,分配的抓取資源要多一些”,調(diào)度模塊正是實現(xiàn)這一點而設(shè)計的。

進一步,所述抓取及頁面解析模塊為爬蟲系統(tǒng)負(fù)責(zé)下載頁面及解析頁面結(jié)構(gòu)化字段的模塊。

進一步,所述附件處理模塊為爬蟲系統(tǒng)負(fù)責(zé)下載頁面的附件并存儲的模塊。

進一步,圖片處理模塊為爬蟲系統(tǒng)負(fù)責(zé)下載圖片、上傳圖片至cdn、替換原網(wǎng)頁img標(biāo)簽的模塊。

進一步,監(jiān)控模塊為爬蟲系統(tǒng)負(fù)責(zé)監(jiān)控各個需要爬取的站點日爬取狀態(tài)的模塊,同時它還負(fù)責(zé)監(jiān)控隊列服務(wù)的隊長,防止系統(tǒng)負(fù)載過重而帶來的抓取不及時等問題。

進一步,配置平臺模塊為爬蟲系統(tǒng)的web控制臺,負(fù)責(zé)配置各個需要抓取站點的調(diào)度規(guī)則、結(jié)構(gòu)化字段樣式,同時它還以圖表的形式展示監(jiān)控模塊統(tǒng)計的監(jiān)控數(shù)據(jù)。

進一步,http代理模塊為爬蟲系統(tǒng)提供應(yīng)對一些站點的反爬蟲功能;通過對幾十上百個動態(tài)ip進行http代理,使得站點針對某些ip實行封禁的反爬蟲策略失效。

由于采用上述方案,本發(fā)明的有益效果是:

(1)系統(tǒng)穩(wěn)定性、可靠性強。本爬蟲系統(tǒng)中的所有模塊均可采用多點部署,并且對系統(tǒng)資源使用最多的模塊“抓取及頁面解析模塊”是“無狀態(tài)的”,一個或多個模塊掛掉不影響系統(tǒng)整體的運行;

(2)伸縮、擴展性強。本爬蟲系統(tǒng)可以根據(jù)需要爬取的資源數(shù)量,動態(tài)的增加或減少相應(yīng)模塊部署的數(shù)量。這里的“資源”可以是站點數(shù)量、頁面數(shù)量,也可以是附件下載量,所需處理的頁面圖片流量,伸縮的“粒度”不可謂不精細;

(3)可控性強。本爬蟲系統(tǒng),可以通過配置平臺模塊來控制不同站點的抓取頻率、抓取的結(jié)構(gòu)化字段,對企業(yè)積累自己的資訊數(shù)據(jù)提供及時、個性化的強力保證。

附圖說明

圖1是本發(fā)明的系統(tǒng)架構(gòu)圖。

圖2是本發(fā)明的系統(tǒng)調(diào)度流程圖。

圖3是本發(fā)明的配置存儲結(jié)構(gòu)er圖。

圖4是本發(fā)明的數(shù)據(jù)存儲結(jié)構(gòu)er圖。

具體實施方式

下面結(jié)合附圖對本發(fā)明的較佳實例進行詳細闡述,以使本發(fā)明的優(yōu)點和特征更易于被本領(lǐng)域技術(shù)人員理解,從而對本發(fā)明的保護范圍做出更為清楚明確的界定。

圖1為本發(fā)明的基礎(chǔ)架構(gòu)圖:

模塊scheduler為調(diào)度模塊,負(fù)責(zé)根據(jù)需要抓取的站點的重要程度不同來合理地確定調(diào)度頻率,和分配抓取資源;

模塊crawler為抓取與頁面解析模塊,主要?來下載??以及抽取鏈接或者結(jié)構(gòu)化字段,?狀態(tài),可同時啟?多個;

模塊attacher為附件抓取模塊,主要?來抓取?頁頁?可能存在的附件,?狀態(tài),可同時啟?多個;

模塊imager為圖?抓取模塊,主要?來抓取?頁頁?可能存在的圖?,上傳cdn后替換原?站的圖?地址到抓取的??數(shù)據(jù)中,?狀態(tài),可同時啟?多個;

模塊queue_server通過binlog?式實現(xiàn)的主從同步隊列服務(wù)模塊,總共包含兩種隊列,“總隊列”和“待調(diào)度站點隊列”;

模塊monitor為抓取監(jiān)控模塊,實時監(jiān)控各站點的抓取情況,提供抓取異常報警機制;

模塊web_config_server為爬?系統(tǒng)站點配置控制臺模塊,?來可視化編輯各爬取站點的配置;

數(shù)據(jù)庫config_mysql:各站點配置信息存放的mysql數(shù)據(jù)庫,配置信息包括了各站點的權(quán)重,以及最終落地數(shù)據(jù)庫的結(jié)構(gòu)化字段的抓取特征(cssselector,regex);

數(shù)據(jù)庫storage_mysql為抓取數(shù)據(jù)最終落地的mysql數(shù)據(jù)庫;

模塊http_proxy為?來應(yīng)對擁有“反爬?”機制?站的http代理模塊,它可以動態(tài)分配不同ip供有下載需求的服務(wù)進?http代理下載;

模塊urlinfo_dcache為?來保存鏈接爬取狀態(tài)的key-value形式的nosql數(shù)據(jù)庫,爬?系統(tǒng)主要使?它來濾重以及跟蹤鏈接爬取得狀態(tài);

模塊uniid_server為成全局唯?的id號的服務(wù),供多個crawler調(diào)?,保證落地數(shù)據(jù)id的唯?性。

圖2為本發(fā)明的系統(tǒng)調(diào)度流程圖,結(jié)合圖1所示,對步驟進行詳細描述:

流程1-1為調(diào)度模塊scheduler將種子鏈接放入“總隊列”中;

流程2為抓取與頁面解析模塊將要下載和進行解析的連接從“總隊列”中取出;

流程3-1為抓取與頁面解析模塊如果處理鏈接是詳情頁鏈接,則直接把解析出來的結(jié)構(gòu)化字段信息存入結(jié)果庫;

流程3-2為抓取與頁面解析模塊如果處理的鏈接為列表頁,則把解析出來的下一級列表頁或者詳情頁放入相應(yīng)站點對應(yīng)的“待抓取隊列”中;

流程4為調(diào)度模塊根據(jù)各個站點的抓取頻率和權(quán)重來適宜地從各個“待抓取隊列”中獲取適宜數(shù)量的待抓取鏈接,然后通過流程1-2,將這些鏈接放入總隊列中。

圖3為配置存儲結(jié)構(gòu)er圖。下面對具體的er圖實體進行說明:

t_crawl_config為基本配置表,對應(yīng)為某個網(wǎng)站額某一類頁面,例如:“新浪博客新聞列表頁”或者“東方財富國際新聞詳情頁”;

t_crawl_detail_pattern為詳情頁模板配置表,t_crawl_config和t_crawl_detail_pattern為1對多的關(guān)系,可以理解為某一類詳情頁的頁面可能有多種版面,所以需要抽取結(jié)構(gòu)化字段的特征值也會有所不同;

t_crawl_list_template為列表頁模板配置表,它和t_crawl_detail_template與t_crawl_config的關(guān)系有些類似,只是列表頁和詳情頁關(guān)注的結(jié)構(gòu)化字段會有所不同,因而會有差別;

以上各表各字段的含義基本可以做到“見名知意”。

圖4為本發(fā)明的數(shù)據(jù)存儲結(jié)構(gòu)er圖。結(jié)合圖4所示,對對具體的er圖實體進行說明:

t_temp_storage_***為資訊存儲的主表,存儲了爬取解析到的資訊詳情結(jié)構(gòu)化信息,例如:標(biāo)題,作者,資訊內(nèi)容等;

t_temp_attach_***為資訊附件信息表,存儲了爬取到的資訊詳情頁所帶的附件;

以上各表各字段的含義基本可以做到“見名知意”;

表2大致列出了表t_temp_storage_***和表t_temp_attach_***的字段含義。

以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所做的等效結(jié)構(gòu)或等效流程變化,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1