謝澤輝,李建忠
(韓山師范學(xué)院數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,廣東潮州 521041)
海量音頻分布式網(wǎng)絡(luò)爬蟲系統(tǒng)的研究與實(shí)現(xiàn)
謝澤輝,李建忠
(韓山師范學(xué)院數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,廣東潮州 521041)
隨著互聯(lián)網(wǎng)信息量的日益劇增,基于分布式的網(wǎng)絡(luò)爬蟲系統(tǒng)已經(jīng)成為未來的一個(gè)重要發(fā)展趨勢.文章利用提供的初始URL種子,通過分布式網(wǎng)絡(luò)爬蟲系統(tǒng)抓取海量音頻,同時(shí)也對(duì)分布式網(wǎng)絡(luò)爬蟲中的媒體音頻真實(shí)地址解析,URL去重、分布式任務(wù)調(diào)度、sniffer嗅探等技術(shù)進(jìn)行了研究和探索.實(shí)驗(yàn)結(jié)果表明,基于分布式的海量音頻爬蟲系統(tǒng)能以較少的時(shí)間代價(jià)準(zhǔn)確地抓取海量符合需求的音頻.
主從分布式網(wǎng)絡(luò)爬蟲;海量音頻;Boom Filter;二次哈希;sniffer網(wǎng)絡(luò)嗅探
當(dāng)今世界是一個(gè)大數(shù)據(jù)、信息多元化的世界,如何從海量的數(shù)據(jù)中高效地獲得有價(jià)值的信息已經(jīng)形成一門重要的學(xué)科.半個(gè)世紀(jì)以來,互聯(lián)網(wǎng)發(fā)展迅猛,使得音頻等多媒體信息日益豐富,互聯(lián)網(wǎng)給人類生活帶來便利的同時(shí),也引發(fā)了嚴(yán)重的知識(shí)產(chǎn)權(quán)問題,大量基于互聯(lián)網(wǎng)的信息盜版猖獗.數(shù)字媒體不同于傳統(tǒng)作品,可以輕易被拷貝復(fù)制,通過互聯(lián)網(wǎng)進(jìn)行再次分發(fā)銷售,在如今互聯(lián)網(wǎng)大數(shù)據(jù)時(shí)代,如何保護(hù)網(wǎng)絡(luò)音頻的版權(quán),約束非法傳播源,是互聯(lián)網(wǎng)健康發(fā)展的重要前提.盡管基于音頻水印、數(shù)據(jù)加密、版權(quán)保護(hù)、文件簽名等技術(shù)的數(shù)字版權(quán)保護(hù)技術(shù)(DRM)已較為成熟,并且有相應(yīng)的商業(yè)產(chǎn)品,但在實(shí)際應(yīng)用中仍然存在安全問題,并且DRM對(duì)于解密后的作品無法進(jìn)行控制.DRM只能檢測非法拷貝的音頻是否侵權(quán),而不能主動(dòng)搜索檢測非法傳播源,而網(wǎng)絡(luò)爬蟲作為對(duì)DRM的補(bǔ)充,就是主動(dòng)跟蹤捕獲網(wǎng)絡(luò)非法拷貝多媒體的最佳實(shí)現(xiàn)方式.
中國互聯(lián)網(wǎng)報(bào)告指出,2014年我國站點(diǎn)總數(shù)約為320萬個(gè),網(wǎng)頁總數(shù)直逼1 500億個(gè),同比增長22%,平均每個(gè)站點(diǎn)的網(wǎng)頁數(shù)達(dá)到46 875個(gè).[1]在如此龐大的數(shù)據(jù)中采集音頻文件資源,對(duì)爬蟲系統(tǒng)有著苛刻的要求.面對(duì)EB級(jí)別的海量數(shù)據(jù),構(gòu)建分布式爬蟲系統(tǒng)是必然的選擇.
本文基于海量音頻搭建分布式網(wǎng)絡(luò)爬蟲,嘗試?yán)碚撆c實(shí)現(xiàn)相結(jié)合,具有較強(qiáng)的實(shí)際應(yīng)用.
1.1 分布式網(wǎng)絡(luò)爬蟲系統(tǒng)的背景與需求
近年來,隨著計(jì)算機(jī)和通訊技術(shù)的迅速發(fā)展以及使用的普及,使得將處理任務(wù)分布到網(wǎng)絡(luò)上的所有計(jì)算機(jī)成為一種可能,分布式是一種基于網(wǎng)絡(luò)的計(jì)算機(jī)處理技術(shù)[2],具有快速訪問、多用戶使用、高效率等優(yōu)點(diǎn).過去集中式爬蟲系統(tǒng)為了提高采集效率,同時(shí)開啟若干個(gè)爬蟲線程,并采用廣度優(yōu)先搜索策略進(jìn)行爬行,但是集中式網(wǎng)絡(luò)爬蟲的采集效率依然較低.近些年隨著互聯(lián)網(wǎng)的數(shù)據(jù)爆炸,集中式網(wǎng)絡(luò)爬蟲采集效率遠(yuǎn)遠(yuǎn)被信息增長的速度甩在身后,特別是互聯(lián)網(wǎng)上的數(shù)字音頻文件,采集過程中會(huì)消耗爬蟲系統(tǒng)大量的帶寬,使得帶寬成為爬蟲系統(tǒng)提升采集效率的瓶頸,所以在存儲(chǔ)和爬行效率方面,構(gòu)建分布式網(wǎng)絡(luò)爬蟲都是必須的.相對(duì)于集中式網(wǎng)絡(luò)爬蟲,分布式網(wǎng)絡(luò)爬蟲具有更高的可靠性、更高的效率和擴(kuò)展性、更短的更新周期、更便捷的數(shù)據(jù)存儲(chǔ)方式等優(yōu)點(diǎn).
1.2 分布式網(wǎng)絡(luò)爬蟲系統(tǒng)的實(shí)現(xiàn)目標(biāo)
針對(duì)海量數(shù)字音頻的采集需求,分布式網(wǎng)絡(luò)爬蟲系統(tǒng)要實(shí)現(xiàn)以下幾點(diǎn)要求:
1.2.1 高可靠性
網(wǎng)絡(luò)爬蟲的運(yùn)行周期通常較長,少則數(shù)天數(shù)月,多則數(shù)年,爬蟲必須能長時(shí)間運(yùn)行,并且具有較高的容錯(cuò)性,能對(duì)運(yùn)行過程中出現(xiàn)的異常進(jìn)行記錄和處理.因?yàn)榉植际脚老x系統(tǒng)的長時(shí)間運(yùn)行,可能會(huì)因操作系統(tǒng)的bug、硬盤、內(nèi)存、網(wǎng)絡(luò)等設(shè)施的損壞出現(xiàn)節(jié)點(diǎn)失效,所以爬蟲系統(tǒng)必須有持續(xù)監(jiān)視、容錯(cuò)處理以及自動(dòng)恢復(fù)等機(jī)制.
1.2.2 高性能
互聯(lián)網(wǎng)上的網(wǎng)頁數(shù)目巨大,并且這個(gè)數(shù)目每年都在快速增長,分布式爬蟲系統(tǒng)必須能快速地抓取分析網(wǎng)頁,并且根據(jù)網(wǎng)頁重要程度來調(diào)整URL隊(duì)列抓取順序.
1.2.3 支持?jǐn)帱c(diǎn)下載
互聯(lián)網(wǎng)上的數(shù)字音頻所占空間較大,爬蟲不可能一次性全部采集下載完畢,因此爬蟲系統(tǒng)必須支持?jǐn)?shù)字音頻文件的斷點(diǎn)下載.
1.2.4 能夠解析網(wǎng)頁中的音頻流
對(duì)于大多數(shù)音頻網(wǎng)站,都沒有直接給出音頻文件的URL地址,而是使用流媒體技術(shù)[3]向?yàn)g覽器傳輸流,因此需要爬蟲能解析腳本文件得到流媒體文件的真實(shí)地址,盡可能多地獲取采集互聯(lián)網(wǎng)上的數(shù)字音頻文件.
網(wǎng)絡(luò)爬蟲(Spider)[2]是一個(gè)機(jī)器人程序,通過一系列初始種子隊(duì)列下載采集對(duì)應(yīng)網(wǎng)頁的內(nèi)容,并解析下載網(wǎng)頁中的URL,剔除重復(fù)或已訪問過的URL,將新采集到的URL進(jìn)隊(duì),依次抓取隊(duì)列中的URL頁面,直到隊(duì)列為空或是達(dá)到預(yù)期目標(biāo).其中,網(wǎng)絡(luò)爬蟲的基本流程如圖1所示.
圖1網(wǎng)絡(luò)爬蟲基本流程
圖1 是網(wǎng)絡(luò)爬蟲的一次順序爬行工作流程,在網(wǎng)絡(luò)爬蟲的具體實(shí)現(xiàn)中,網(wǎng)頁下載、網(wǎng)頁解析和URL過濾可以無序執(zhí)行.從圖1的流程圖中可以將網(wǎng)絡(luò)爬蟲系統(tǒng)分為五個(gè)模塊:
(1)URL Frontier模塊存放爬蟲待抓取的URL.
(2)DNS解析模塊判斷爬蟲從哪個(gè)web服務(wù)器采集頁面.
(3)下載模塊通過超文本傳輸協(xié)議獲取URL頁面.
(4)內(nèi)容解析模塊解析提取頁面信息和URL集合.
(5)去重模塊判斷該URL近期是否處理過.
3.1 爬行策略
互聯(lián)網(wǎng)可以看成一張超級(jí)大的“圖”,每一個(gè)頁面可以看成是一個(gè)“節(jié)點(diǎn)”[2],頁面中的鏈接看成是圖的“有向邊”.故互聯(lián)網(wǎng)網(wǎng)頁的遍歷可以看成是一張圖的遍歷,而圖的遍歷通常分為寬度優(yōu)先遍歷和深度優(yōu)先遍歷[4],因?yàn)閷挾葍?yōu)先遍歷策略更易實(shí)現(xiàn)多線程和分布式,故本文構(gòu)建的爬蟲系統(tǒng)使用寬度優(yōu)先遍歷.
3.1.1 寬度優(yōu)先遍歷
寬度優(yōu)先遍歷算法[4]的本質(zhì)是分層搜索,在圖中選中一個(gè)節(jié)點(diǎn),作為初始節(jié)點(diǎn),然后按照層次遍歷的方式,逐層訪問.在寬度優(yōu)先遍歷過程中使用一個(gè)隊(duì)列保存當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu).具體的算法如下所示:
(1)初始點(diǎn)P進(jìn)入隊(duì)列;
(2)當(dāng)隊(duì)列非空繼續(xù)執(zhí)行,否則算法結(jié)束;
(3)隊(duì)頭節(jié)點(diǎn)P出隊(duì)列,訪問節(jié)點(diǎn)P并標(biāo)記已訪問;
(4)查找節(jié)點(diǎn)P的鄰接頂點(diǎn)col,并且判斷節(jié)點(diǎn)col是否已訪問,否則col進(jìn)入隊(duì)列;
(5)繼續(xù)查找節(jié)點(diǎn)P的其他鄰接頂點(diǎn)col,轉(zhuǎn)到步驟(4),若P的所有鄰接頂點(diǎn)全部訪問完畢,則轉(zhuǎn)到步驟(2).
在實(shí)際應(yīng)用中,網(wǎng)站的重要信息往往位于上層,越重要的網(wǎng)頁距離首頁越近[5],人們更加愿意點(diǎn)擊更少的次數(shù)獲得信息,對(duì)于層次深的網(wǎng)頁往往失去訪問的耐心.故寬度優(yōu)先遍歷的策略更符合實(shí)際,能便捷地實(shí)現(xiàn)并行爬行.
3.1.2 URL丟棄策略
互聯(lián)網(wǎng)上的垃圾頁面極多,并且本系統(tǒng)針對(duì)音頻文件進(jìn)行抓取,使用單純的寬度優(yōu)先遍歷依舊可能會(huì)陷入垃圾頁面,故必須在爬行中對(duì)分析得到的URL進(jìn)行過濾,拋棄重要程度低的URL,通過查閱資料和對(duì)國內(nèi)大多數(shù)音頻網(wǎng)站的分析,以下URL可以直接丟棄.
1)URL過長
丟棄長度超過256個(gè)字符的URL.
2)URL的深度過深
大部分網(wǎng)站均有SEO優(yōu)化,重要的信息均會(huì)放置得離首頁較近,隨著深度的增加,網(wǎng)頁的重要程度急劇下降,設(shè)置閾值為5,當(dāng)深度超過5的時(shí)候,直接丟棄.
3)URL文件名中存在大量無意義的符號(hào)
如果URL的文件名中存在大量的“_”,“、”,“=”等無意義的連接符,則可以認(rèn)定該網(wǎng)頁為服務(wù)器動(dòng)態(tài)生成網(wǎng)頁,丟棄該URL.
4)URL中含有過多的查詢?cè)~
URL中“?”后面的查詢?cè)~越多,表明有極大可能確定該網(wǎng)頁是服務(wù)器的表單頁面或是服務(wù)器使用固定模板填充的內(nèi)容.
3.2 URL去重
3.2.1 基于內(nèi)存的Hash去重方式
在爬蟲系統(tǒng)中,檢測一個(gè)URL是否被訪問過的最簡單方法就是將已訪問過的URL集合存儲(chǔ)在計(jì)算機(jī)內(nèi)存的Hash表[6]中,當(dāng)爬蟲系統(tǒng)解析到一個(gè)新的URL,只需將它與Hash表中的URL集合進(jìn)行對(duì)比即可.它的優(yōu)點(diǎn)是速度快準(zhǔn)確率高,缺點(diǎn)是比較浪費(fèi)內(nèi)存空間.當(dāng)URL數(shù)量少的時(shí)候可以使用該方法,但是在分布式網(wǎng)絡(luò)爬蟲系統(tǒng)中,抓取的URL數(shù)量很大,內(nèi)存很快就會(huì)被消耗完畢,導(dǎo)致整個(gè)分布式系統(tǒng)的任務(wù)調(diào)度癱瘓.
3.3.2 基于Bloom Filter去重方式
Boom Filter(布隆過濾器)是布隆于1970年提出,只需要Hash表的1/8到1/4內(nèi)存就可以解決同樣的問題.[6]布隆過濾器的思路是:
1)建立一個(gè)16倍URL大小的地址空間,然后將建立的地址空間二進(jìn)制位全設(shè)為零.
2)對(duì)于每個(gè)URL,用8位不同的隨機(jī)數(shù)產(chǎn)生器(F1,F(xiàn)2,…,F(xiàn)8)產(chǎn)生8個(gè)信息指紋(f1,f2,…,f8).
3)使用一個(gè)隨機(jī)數(shù)產(chǎn)生器把這8個(gè)信息指紋映射到所創(chuàng)建的空間的8個(gè)自然數(shù)r1,r2,…,r8.
4)然后把這8個(gè)位置的二進(jìn)制位全部設(shè)置為1.將全部URL進(jìn)行映射,一個(gè)針對(duì)URL去重的Bloom Filter就建設(shè)完畢.
Boom Filter的好處在于快速、省空間.Boom Filter不會(huì)錯(cuò)漏任何在過濾器中的URL,但有極小的可能會(huì)出現(xiàn)誤判,約為萬分之一,故可在Boom Filter的基礎(chǔ)上引入白名單模塊,存儲(chǔ)可能會(huì)出現(xiàn)誤判操作的URL,改進(jìn)Boom Filter.故Boom Filter適用于海量的URL去重且效果明顯,能使用于分布式爬蟲系統(tǒng)中.
3.3 數(shù)字音頻資源的獲取及其真實(shí)地址解析
通過分析國內(nèi)主流音頻分享網(wǎng)站,發(fā)現(xiàn)其音頻的真實(shí)下載地址不能從頁面解析,需要經(jīng)過處理后才能得到.判斷一個(gè)URL標(biāo)識(shí)何種資源,較為直觀的方法是查看該URL的文件擴(kuò)展名,如“.html”標(biāo)識(shí)一般網(wǎng)頁文本文檔,“.mp3”標(biāo)識(shí)音頻文件,“.mp4”標(biāo)識(shí)視頻文件,在一般狀態(tài)下,獲得URL即可獲得該資源的信息,但是隨著動(dòng)態(tài)網(wǎng)頁技術(shù)的發(fā)展,看似普通的網(wǎng)頁URL,其對(duì)應(yīng)的服務(wù)端可能是一個(gè)查詢服務(wù)臺(tái),通過查詢?cè)~可以返回不同的資源.特別是URL地址重定向,短鏈接技術(shù)的盛行,通過URL文件名來判斷文件資源的類型可靠性越來越低.
隨著web3.0時(shí)代的到來,互聯(lián)網(wǎng)再也不是一個(gè)僅僅單獨(dú)獲取資源的平臺(tái),更是一個(gè)資源發(fā)布與共享的平臺(tái).互聯(lián)網(wǎng)上的音頻網(wǎng)站數(shù)目眾多,各個(gè)站點(diǎn)音頻地址的獲取方式都不一樣,并不存在一個(gè)通用的方法.在本文中,對(duì)酷狗音樂網(wǎng)的音頻地址進(jìn)行解析,并建立可擴(kuò)展的音頻真實(shí)地址解析框架,需要抓取特定網(wǎng)站的音頻只需加入特定的音頻網(wǎng)站真實(shí)地址解析模塊即可實(shí)現(xiàn)對(duì)該網(wǎng)站進(jìn)行音頻采集.
通過分析酷狗音樂下載有以下特點(diǎn):
1)根據(jù)所在地區(qū)跟帶寬等因素動(dòng)態(tài)生成音頻下載地址,同個(gè)音頻文件每次的下載地址可能不一樣.
2)大部分無損音質(zhì)的音頻文件采用分布式存在不同的服務(wù)器上.
3)音頻的下載有限制,下載地址只與對(duì)應(yīng)請(qǐng)求的瀏覽器相同的user-agent有效.
使用sniffer網(wǎng)絡(luò)嗅探[7],查看網(wǎng)絡(luò)傳輸包的地址,解析酷狗音樂網(wǎng)的音樂下載地址,發(fā)現(xiàn)傳輸?shù)刂分械臄U(kuò)展名為“.mp3”、“.wma”、“.wav”等的就是音頻文件的真實(shí)地址.
使用HttpClient[8]可以改變自己的user-agent然后發(fā)送請(qǐng)求,得到具有針對(duì)性的下載地址.其中HttpClient是Apache下的一個(gè)開源項(xiàng)目,封裝了大量與Http相關(guān)的組件.
3.4 分布式系統(tǒng)任務(wù)調(diào)度
在主從分布式爬蟲系統(tǒng)中,合理的任務(wù)調(diào)度對(duì)發(fā)揮系統(tǒng)的并行能力,保持網(wǎng)絡(luò)負(fù)載的均衡等具有重要意義.
本文使用二次Hash映射算法[9]來進(jìn)行分布式系統(tǒng)的任務(wù)調(diào)度.分布式爬蟲系統(tǒng)中爬行節(jié)點(diǎn)的數(shù)目是已知的,假設(shè)為M,分布式爬蟲系統(tǒng)正在運(yùn)行的節(jié)點(diǎn)數(shù)目為N,可知N≤M.主控制節(jié)點(diǎn)先對(duì)URL進(jìn)行標(biāo)準(zhǔn)化并進(jìn)行第一次哈希運(yùn)算,將運(yùn)算結(jié)果映射到對(duì)應(yīng)的邏輯表元素上,判斷檢測邏輯表對(duì)應(yīng)的爬行節(jié)點(diǎn)是否正在運(yùn)行.如果節(jié)點(diǎn)正在運(yùn)行,則將該URL分配給該爬行節(jié)點(diǎn).如果爬行節(jié)點(diǎn)未運(yùn)行或是不存在,則把所有映射到該節(jié)點(diǎn)的URL均勻分配到其他爬行節(jié)點(diǎn)上.經(jīng)過測試,分布式系統(tǒng)中的運(yùn)行節(jié)點(diǎn)數(shù)目的變化是動(dòng)態(tài)的,使用二次Hash映射算法進(jìn)行任務(wù)調(diào)度并不會(huì)影響URL的均衡分配.
4.1 分布式系統(tǒng)構(gòu)架
本文涉及的分布式爬蟲系統(tǒng)需要抓取海量音頻數(shù)據(jù),故采用結(jié)構(gòu)相對(duì)簡單但技術(shù)更為成熟的主從模式[4]作為系統(tǒng)的通訊模式,整個(gè)系統(tǒng)構(gòu)架如圖2所示.
主從分布式爬蟲系統(tǒng)[4]由一個(gè)主控制節(jié)點(diǎn)和爬行節(jié)點(diǎn)構(gòu)成,主控制節(jié)點(diǎn)負(fù)責(zé)整個(gè)系統(tǒng)的任務(wù)調(diào)度和相關(guān)協(xié)調(diào)工作并進(jìn)行URL去重任務(wù),而爬行節(jié)點(diǎn)則具體實(shí)施主控制節(jié)點(diǎn)分配的任務(wù),如表1所示.主從式分布系統(tǒng)的系統(tǒng)調(diào)度任務(wù)清晰,在任務(wù)調(diào)度上有著較高的效率,但是一旦主控制節(jié)點(diǎn)崩潰,會(huì)導(dǎo)致整個(gè)分布式系統(tǒng)的奔潰.
表1 主從分布系統(tǒng)任務(wù)分工
4.2 工作流程
主從分布式系統(tǒng)開始運(yùn)行時(shí),主控制節(jié)點(diǎn)首先將初始URL種子(www.kugou.com)加入隊(duì)列,并從初始URL出發(fā),計(jì)算其Hash值.使用二次Hash算法將該URL任務(wù)調(diào)度到指定的爬行節(jié)點(diǎn)上,同時(shí)記錄下該URL,并使用Boom Filter去重將該URL存儲(chǔ)在內(nèi)存中.
被分配到任務(wù)的爬行節(jié)點(diǎn)接收到該URL后,爬行節(jié)點(diǎn)對(duì)該URL指向的資源進(jìn)行下載,并且將該資源存儲(chǔ)到本地硬盤.與此同時(shí)爬行節(jié)點(diǎn)分析得到該頁面中的有效鏈接,并將所有該網(wǎng)站的外鏈全部發(fā)送到主控制服務(wù)器.主控制節(jié)點(diǎn)接收到爬行節(jié)點(diǎn)傳回的URL后,首先更新記錄之前發(fā)送的URL爬行時(shí)間,然后使用Boom Filter處理接收到的URL.如果存在則去重,若不存在則將這些URL進(jìn)隊(duì),繼續(xù)使用二次Hash算法進(jìn)行任務(wù)調(diào)度分配,循環(huán)此步驟,指導(dǎo)系統(tǒng)完成目標(biāo)任務(wù).
位于主控制節(jié)點(diǎn)的網(wǎng)頁定期更新操作,更新的流程與網(wǎng)頁信息抓取的流程相似,主控制節(jié)點(diǎn)定期掃描存儲(chǔ)在數(shù)據(jù)庫中的URL,檢測URL是否需要進(jìn)行更新操作.如果需要更新操作,則使用二次Hash對(duì)該URL進(jìn)行調(diào)度分配.主控制節(jié)點(diǎn)與爬行節(jié)點(diǎn)的任務(wù)協(xié)調(diào)流程如圖3所示.
圖3 任務(wù)協(xié)調(diào)流程圖
本文設(shè)計(jì)的爬蟲系統(tǒng)是基于分布式的海量音頻采集系統(tǒng),核心是分布式海量音頻系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).故如何搭建分布式平臺(tái)[10]也是系統(tǒng)實(shí)現(xiàn)的一個(gè)關(guān)鍵步驟,本文通過安裝虛擬機(jī)的方式來實(shí)現(xiàn)分布式系統(tǒng).
5.1 爬蟲系統(tǒng)環(huán)境
因?yàn)楸疚牡木W(wǎng)絡(luò)爬蟲僅僅是通過在虛擬機(jī)上來模擬,故對(duì)計(jì)算機(jī)的硬件要求較低,只需要一臺(tái)PC機(jī)即可,機(jī)器硬件的詳細(xì)信息為:Intel酷睿i5 4590CPU,芝奇8G內(nèi)存,機(jī)械硬盤500G.
因?yàn)楸敬卧谔摂M機(jī)上實(shí)現(xiàn)主從式分布系統(tǒng),在降低系統(tǒng)硬件要求的同時(shí),對(duì)軟件的環(huán)境會(huì)提出更高的要求,故在虛擬機(jī)中搭建Linux操作系統(tǒng),同時(shí)安裝JDK和Eclipse.系統(tǒng)運(yùn)行環(huán)境配置具體信息為VMware12.0.0,虛擬機(jī)操作系統(tǒng)位Ubuntu Kylin 14.04,JDK版本為1.8.0_60,Eclipse版本為4.5.0.
對(duì)虛擬機(jī)的分別配置網(wǎng)絡(luò)設(shè)置,關(guān)閉其網(wǎng)絡(luò)防火墻,并對(duì)網(wǎng)絡(luò)拓?fù)溥M(jìn)行相關(guān)設(shè)置,然后安裝JDK1.8.0+60,最后對(duì)分布式網(wǎng)絡(luò)爬蟲重新編譯.
5.2 系統(tǒng)運(yùn)行測試
本次測試采集的站點(diǎn)為酷狗音樂網(wǎng),站點(diǎn)采集范圍為酷狗精選集下的所有歌曲信息:音頻名字、音頻作者、音頻簡介、音頻真實(shí)下載地址.具體采集音頻結(jié)果信息如表2所示.
表2 酷狗音樂精選集采集結(jié)果
表2為酷狗音樂精選集采集的信息結(jié)果表,隨著采集量呈指數(shù)性增長,網(wǎng)絡(luò)帶寬成為一個(gè)瓶頸,正確率也會(huì)隨之下降,因?yàn)榫W(wǎng)頁數(shù)目龐大時(shí),網(wǎng)頁總會(huì)存在掉鏈等問題.
基于海量音頻分布式爬蟲系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),其原理清晰易懂,但是系統(tǒng)采集的是數(shù)字音頻文件,在運(yùn)行過程中涉及到海量數(shù)據(jù),對(duì)爬蟲系統(tǒng)是一個(gè)嚴(yán)峻的挑戰(zhàn).分布式系統(tǒng)的設(shè)計(jì),必須保證各個(gè)節(jié)點(diǎn)能高效運(yùn)作,對(duì)故障有可靠的解決方案,且爬行節(jié)點(diǎn)可以便捷地?cái)U(kuò)展和退出,同時(shí)在不影響系統(tǒng)運(yùn)轉(zhuǎn)的同時(shí)可以快速處理節(jié)點(diǎn)故障等問題.
本文設(shè)計(jì)的主從分布式爬蟲系統(tǒng),具有一個(gè)主控制節(jié)點(diǎn),多個(gè)爬行節(jié)點(diǎn).爬行節(jié)點(diǎn)與主控制節(jié)點(diǎn)之間只進(jìn)行控制信息通訊,沒有轉(zhuǎn)發(fā)傳輸任何URL和音頻數(shù)據(jù),避免了控制信息通訊成為分布式系統(tǒng)的瓶頸.且本文構(gòu)建的網(wǎng)絡(luò)爬蟲系統(tǒng)具有較強(qiáng)的擴(kuò)展性,同樣適用于海量視頻的采集.另外,在解析動(dòng)態(tài)網(wǎng)頁音頻真實(shí)地址時(shí)沒有一個(gè)通用的方法,不同的網(wǎng)站需要不同的方法解析.本文對(duì)海量音頻分布式爬蟲系統(tǒng)的測試僅僅在單個(gè)站點(diǎn)且實(shí)驗(yàn)室環(huán)境下,如何解析更一般情況下的音頻真實(shí)地址是下一步的研究內(nèi)容.
[1]中國互聯(lián)網(wǎng)協(xié)會(huì).中國互聯(lián)網(wǎng)發(fā)展報(bào)告(2014)[J].互聯(lián)網(wǎng)天地,2014(06):73-78.
[2]羅剛,王振東.自己動(dòng)手寫網(wǎng)絡(luò)爬蟲[M].北京:清華大學(xué)出版社,2010:47-48.
[3]陳鵹.基于標(biāo)準(zhǔn)協(xié)議的流媒體平臺(tái)的研究和實(shí)現(xiàn)[D].上海:上海交通大學(xué),2009.
[4]劉學(xué).分布式多媒體網(wǎng)絡(luò)爬行系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2012.
[5]胡毅.搜索引擎優(yōu)化及其應(yīng)用研究[D].昆明:云南大學(xué),2011.
[6]吳小惠.分布式網(wǎng)絡(luò)爬蟲URL去重策略的改進(jìn)[J].平頂山學(xué)院學(xué)報(bào),2009,24(5):116-119.
[7]劉波濤,趙剛,馮翠麗,等.Sniffer原理解析及其WinPcap實(shí)現(xiàn)[J].華東交通大學(xué)學(xué)報(bào),2005,22(5):96-99.
[8]李榮榮.基于Lucene/HttpClient的垂直搜索引擎研究與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2011.
[9]吳小惠.分布式網(wǎng)絡(luò)爬蟲系統(tǒng)的任務(wù)調(diào)度策略改進(jìn)[J].上饒師范學(xué)院學(xué)報(bào),2010(3):87-91.
[10]GUO Songtao,DONG JianXiong.A Large Scale URL Verification Pipeline Using Hadoop[C],Shanghai:Data Mining Workshops(ICDMW),2011 IEEE 11thInternational Conference on,2011:1-5.
Research and Implementation of the Web Crawler Based on the Distributed System
XIE Ze-hui,LI Jian-zhong
(School of Mathematics and Statistics,Hanshan Normal University,Chaozhou,Guangdong,521041)
With the sharp increase of information on the Internet,the web crawler system which is based on the distributed system has become an important development trend in the future.In this paper,the proposed distributed web crawler system can be employed to collect massive audio by using the initial URL seeds.In addition,how to analyze the real address of the audio by using sniffer technique,how to implement the task scheduling in distributed system and how to remove the duplicated URLs are also investigated.Experiments show that the web crawler based on the distributed system can collect a large number of audio from the Internet exactly in a short time.
distributed web crawler;Massive Audio;Boom Filter;Hash;sniffer
TP 319
A
1007-6883(2015)06-0028-07
責(zé)任編輯 朱本華
2015-03-03
廣東省自然科學(xué)基金項(xiàng)目(項(xiàng)目編號(hào):2014A030310038);廣東省教育廳科研項(xiàng)目(項(xiàng)目編號(hào):2013KJCX0127);廣東省2013年高等教育教學(xué)改革項(xiàng)目.
謝澤輝(1995-),男,廣東揭陽人,韓山師范學(xué)院數(shù)學(xué)與統(tǒng)計(jì)學(xué)院2013級(jí)在讀學(xué)生;李建忠為聯(lián)系作者.