王曉楠,李 楊,張海峰,張 宇,楊雪峰
(1.黑龍江省農(nóng)業(yè)科學(xué)院農(nóng)業(yè)遙感與信息研究所,黑龍江 哈爾濱 150086;2.黑龍江省農(nóng)業(yè)科學(xué)院作物資源研究所,黑龍江 哈爾濱 150086)
關(guān)鍵字:爬蟲;分布式;Nutch框架;二級哈希
隨著中國經(jīng)濟(jì)的快速發(fā)展,現(xiàn)代化農(nóng)業(yè)也在不斷地進(jìn)步和發(fā)展,高科技在農(nóng)業(yè)領(lǐng)域中的投入也隨之加大,目標(biāo)就是轉(zhuǎn)變傳統(tǒng)農(nóng)業(yè)的生產(chǎn)模式。通過抓取農(nóng)業(yè)生產(chǎn)數(shù)據(jù),將更好的種植數(shù)據(jù)提供給廣大農(nóng)業(yè)工作人員,對于解決現(xiàn)代農(nóng)業(yè)種植過程中的問題非常有利。
網(wǎng)絡(luò)爬蟲主要是通過采集網(wǎng)絡(luò)中特定信息為后續(xù)工作提供精確的數(shù)據(jù),因此,該論文運(yùn)用垂直搜索引擎獲取數(shù)據(jù)。為了更好的完成網(wǎng)絡(luò)爬取任務(wù),收集到更多符合條件的網(wǎng)頁信息,運(yùn)用主從分布式架構(gòu)方式來實現(xiàn)對農(nóng)作物生長信息數(shù)據(jù)的爬取,主從分布式架構(gòu)主要包括了分節(jié)點(diǎn)的工作狀態(tài)和監(jiān)控以及URL的分發(fā)工作等,分節(jié)點(diǎn)獲得主節(jié)點(diǎn)分發(fā)的調(diào)度任務(wù)以后,完成調(diào)度任務(wù)中的爬取工作,并且將爬取結(jié)果反饋給主節(jié)點(diǎn)。爬蟲網(wǎng)絡(luò)的主從結(jié)構(gòu),如圖1所示。
在分布式網(wǎng)絡(luò)結(jié)構(gòu)中,計算機(jī)并行化處理很關(guān)鍵,該論文運(yùn)用Nutch框架實現(xiàn)分布式網(wǎng)絡(luò)爬蟲。在農(nóng)作物生長信息數(shù)據(jù)爬取的過程中,主節(jié)點(diǎn)將所有帶URL下載任務(wù)分配給不同的分節(jié)點(diǎn)進(jìn)行爬取。論文設(shè)計分布式下載任務(wù)調(diào)度中,將URL映射到服務(wù)器上來完成下載的任務(wù),計算公式如下:
分布式網(wǎng)絡(luò)伸縮性非常強(qiáng),因此,只要節(jié)點(diǎn)數(shù)量發(fā)生變化,就會導(dǎo)致對數(shù)據(jù)二次爬取,Nutch系統(tǒng)運(yùn)用集中式分割方法解決上述的問題主要是通過構(gòu)建哈希函數(shù)來完成劃分任務(wù)的工作。首先構(gòu)造Hash函數(shù),第一次計算獲得新的URL,并將其映射到表A中;接下來對表A進(jìn)行哈希映射,并將映射后的結(jié)果值劃分給分節(jié)點(diǎn)中。
為了提高爬取的效率,降低主題爬蟲的工作量,最有效的方式將URL的數(shù)目過濾和限定。所有的URL過濾規(guī)則,都是在conf文件目錄下,進(jìn)行參數(shù)配置和過濾規(guī)則的設(shè)計,而非在源代碼中直接進(jìn)行修改;接下來調(diào)取過濾規(guī)則,則是需要調(diào)用URLFilter子類下的getConf()函數(shù),流程如圖2所示,通過上述方式就能夠更加便捷地實現(xiàn)過濾規(guī)則的修改。
圖2 URL 種子抓取
農(nóng)作物生長信息數(shù)據(jù)的主題爬取,不僅要通過URL種子的限定和過濾,還要判斷主題的內(nèi)容。所有網(wǎng)絡(luò)爬取后獲得URL列表注入以后,此時parse Text文該文件就會自動生成,相關(guān)性判斷是基于parse Text文件采用向量模型來實現(xiàn)的,將任意的網(wǎng)頁信息都定義為空間向量,其中表示當(dāng)前網(wǎng)頁的關(guān)鍵詞,表示關(guān)鍵詞的權(quán)重,則兩個向量間的相關(guān)性采用余弦值表示:
通過定義信息抽取模板,就能夠?qū)崿F(xiàn)大部分類型網(wǎng)頁的提取,再將 HTMLPsrser解析庫加載,將提取到的多種類型網(wǎng)頁編寫為相對應(yīng)的頁面進(jìn)行解析方法,從特定的文件中提取到農(nóng)作物生長信息數(shù)據(jù)以后,匹配URL,調(diào)用相對應(yīng)的解析模板,完成相關(guān)網(wǎng)頁的解析工作。具體的流程如下:
(1)構(gòu)建解析網(wǎng)頁信息模板,將不同類型的網(wǎng)頁信息分類以后,編寫相對應(yīng)的解析信息模板;
(2)將下載的URL與模板信息庫進(jìn)行匹配,此時將信息URL種子注入以后,通過對比和分析以后,匹配對應(yīng)的解析模板;
(3)抽取解析后網(wǎng)頁中的信息,并在特定的文件中存儲所有的文本信息。
相關(guān)網(wǎng)絡(luò)爬蟲模板和信息提取流程完成以后,接下來就是優(yōu)化測試分布式網(wǎng)絡(luò)爬蟲的性能,以此來驗證其是否具備一定的優(yōu)勢。該論文通過對比,分析分布式爬蟲網(wǎng)絡(luò)和單機(jī)網(wǎng)絡(luò)爬蟲的數(shù)量和時間性能。
首先,闡述分布式網(wǎng)絡(luò)爬蟲結(jié)構(gòu)的軟硬件,如表1、表2所示。
表1 計算機(jī)軟件配置
表2 集群配置
通過測試,分布式爬取和單機(jī)采集數(shù)據(jù)量在規(guī)定的時間內(nèi)進(jìn)行統(tǒng)計,具體如表3所示,記錄了不同時間段爬蟲抓取獲得的信息量。
表3 采取數(shù)據(jù)量統(tǒng)計表
圖4 統(tǒng)計對比圖
通過分析可以知道,當(dāng)時間段比較小時,分布式爬取數(shù)量并沒有太大的差異。隨著時間的增長和數(shù)據(jù)量遞增以后,分布式網(wǎng)絡(luò)爬取能夠?qū)⒏蟮臄?shù)據(jù)信息量獲得。
在大數(shù)據(jù)時代,為了更好的完成網(wǎng)絡(luò)爬取任務(wù),收集到更多符合條件的網(wǎng)頁信息,該論文運(yùn)用了分布式網(wǎng)絡(luò)爬蟲技術(shù)。在分布式集群中,各個計算機(jī)都是并行執(zhí)行的,這就會涉及到資源調(diào)配問題,因此,當(dāng)網(wǎng)絡(luò)規(guī)模擴(kuò)大到一定程度以后,集中式分割方式會導(dǎo)致整體運(yùn)行速率降低等相關(guān)問題,研究表明,運(yùn)用二級哈希算法來解決該問題,可使整體的負(fù)載均衡效率更好,提高數(shù)據(jù)采集效率。