李慧+何永賢+葉云
摘 要:隨著信息技術(shù)的發(fā)展,農(nóng)業(yè)信息化成為現(xiàn)代農(nóng)業(yè)發(fā)展的必然需求。針對(duì)目前農(nóng)業(yè)信息化服務(wù)信息整合度低、實(shí)時(shí)性信息不夠等問(wèn)題,提出了基于聚焦爬蟲(chóng)的農(nóng)業(yè)信息服務(wù)平臺(tái)。聚焦爬蟲(chóng)按照既定需求,實(shí)時(shí)提取各類(lèi)相關(guān)網(wǎng)頁(yè)信息,通過(guò)信息服務(wù)平臺(tái)進(jìn)行整合,以友好的方式展示給用戶(hù)。平臺(tái)的建設(shè)使得用戶(hù)能夠在龐雜的信息中獲取全面、適用和及時(shí)的農(nóng)業(yè)信息,提高了農(nóng)業(yè)信息服務(wù)水平。
關(guān)鍵詞:聚焦爬蟲(chóng);信息提??;農(nóng)業(yè)信息
中圖分類(lèi)號(hào):TP311.5 文獻(xiàn)標(biāo)識(shí)碼:A DOI 編碼:10.3969/j.issn.1006-6500.2016.10.014
Abstract: With the development of information technology, agricultural informatization has become inevitable demand of modern agriculture. On the road of informationalization, the agricultural information is insufficient concentration and real-time poor. The paper describes the design and implement of the agricultural information service system based on focused crawler. With the need of user requirements, focused crawler access to the webpage and related links. The information obtained is presented to the user in a friendly manner through information service system. The platform which provide comprehensive, authoritative and reliable information for the users, promotes the development of agriculture information service.
Key words: focused crawler; information collection; agricultural information
隨著計(jì)算機(jī)和互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,信息技術(shù)廣泛應(yīng)用。信息化水平反映一個(gè)國(guó)家農(nóng)業(yè)的經(jīng)濟(jì)水平和整體實(shí)力,是實(shí)現(xiàn)農(nóng)業(yè)現(xiàn)代化的基礎(chǔ)與保障。加強(qiáng)農(nóng)業(yè)信息化建設(shè)是我國(guó)當(dāng)今社會(huì)經(jīng)濟(jì)發(fā)展的必然趨勢(shì)和客觀要求[1-4]。
當(dāng)前互聯(lián)網(wǎng)技術(shù)迅猛發(fā)展,萬(wàn)維網(wǎng)成為大量信息的載體,廣泛分布著各類(lèi)信息[5-6]。隨著各類(lèi)農(nóng)業(yè)信息服務(wù)網(wǎng)站的建立,產(chǎn)生了大量的農(nóng)業(yè)信息,但農(nóng)業(yè)信息往往分布分散、信息更新不及時(shí),導(dǎo)致信息質(zhì)量低,不能滿(mǎn)足農(nóng)民、農(nóng)村、農(nóng)業(yè)現(xiàn)實(shí)生產(chǎn)需要[7-11]。針對(duì)現(xiàn)代高效農(nóng)業(yè)發(fā)展對(duì)現(xiàn)代高新技術(shù)的發(fā)展的需求,本文基于聚焦爬蟲(chóng)構(gòu)建農(nóng)業(yè)信息綜合服務(wù)平臺(tái),根據(jù)用戶(hù)的既定需求,設(shè)定面向主題信息采集的聚焦爬蟲(chóng),在海量信息中實(shí)時(shí)、高效、準(zhǔn)確地提取所需農(nóng)業(yè)數(shù)據(jù),積極推動(dòng)中國(guó)的農(nóng)業(yè)農(nóng)村信息化建設(shè)。
1 聚焦爬蟲(chóng)網(wǎng)絡(luò)信息提取框架設(shè)計(jì)
1.1 農(nóng)業(yè)信息服務(wù)平臺(tái)
本系統(tǒng)是在建立農(nóng)業(yè)信息資源數(shù)據(jù)庫(kù)的基礎(chǔ)上,充分挖掘農(nóng)業(yè)信息服務(wù)功能,提供農(nóng)業(yè)綜合信息網(wǎng)絡(luò)服務(wù)的平臺(tái)。平臺(tái)包括基礎(chǔ)服務(wù)平臺(tái)和功能性平臺(tái)兩個(gè)層面,其中基礎(chǔ)服務(wù)平臺(tái)負(fù)責(zé)農(nóng)業(yè)信息資源數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)與管理,以及提供相關(guān)服務(wù)功能的應(yīng)用接口;功能性平臺(tái)包括產(chǎn)品展示交易、電子溯源、技術(shù)交流與服務(wù)等平臺(tái)應(yīng)用接口。總體框架設(shè)計(jì)如圖1所示。
1.2 聚焦爬蟲(chóng)工作流程
為了可以實(shí)現(xiàn)全面、實(shí)時(shí)的農(nóng)業(yè)信息服務(wù),系統(tǒng)基于聚焦爬蟲(chóng),設(shè)定需求,有選擇性地訪(fǎng)問(wèn)萬(wàn)維網(wǎng)上的網(wǎng)頁(yè)和相關(guān)鏈接,獲得目標(biāo)農(nóng)業(yè)信息數(shù)據(jù)。聚焦爬蟲(chóng)根據(jù)網(wǎng)頁(yè)分析策略過(guò)濾與目標(biāo)內(nèi)容無(wú)關(guān)的鏈接,保留有效的鏈接并將其放入等待抓取的容器中。它將根據(jù)一定的搜索策略從容器中選擇下一步要抓取分析的網(wǎng)頁(yè)的URL,并重復(fù)上述過(guò)程,直到達(dá)到系統(tǒng)的某一條件時(shí)停止。所有被爬蟲(chóng)抓取的網(wǎng)頁(yè)數(shù)據(jù)將會(huì)被系統(tǒng)存貯,進(jìn)行一定的分析、過(guò)濾,以便之后的查詢(xún)和檢索;對(duì)于聚焦爬蟲(chóng)來(lái)說(shuō),這一過(guò)程所得到的分析結(jié)果可以對(duì)以后的抓取過(guò)程給出反饋和指導(dǎo)。聚焦爬蟲(chóng)工作流程圖如圖2所示。
1.3 聚焦爬蟲(chóng)網(wǎng)絡(luò)信息提取步驟設(shè)計(jì)
根據(jù)爬蟲(chóng)程序的工作流程,得到爬蟲(chóng)各個(gè)模塊之間的交互時(shí)序圖,如圖3所示。聚焦爬蟲(chóng)的工作步驟如下。
(1)處理線(xiàn)程向URL任務(wù)隊(duì)列請(qǐng)求一個(gè)新的URL,如果該任務(wù)隊(duì)列不為空,那么任務(wù)隊(duì)列會(huì)給處理線(xiàn)程返回處于隊(duì)頭的URL。
(2)處理線(xiàn)程拿到URL后,與Redis中保存的已進(jìn)入任務(wù)隊(duì)列的URL庫(kù)做對(duì)比,同時(shí)更新URL庫(kù)中該URL的狀態(tài)(程序中設(shè)定URL有等待爬取、已爬取2個(gè)狀態(tài))。
(3)處理線(xiàn)程把URL傳遞給請(qǐng)求模塊,HttpClient構(gòu)造HTTP請(qǐng)求發(fā)給服務(wù)器端,并獲得來(lái)自服務(wù)器端的響應(yīng)。
(4)在拿到服務(wù)器端的響應(yīng)后,處理線(xiàn)程將之交予解析模塊,解析模塊會(huì)先將響應(yīng)轉(zhuǎn)化為方便解析的文檔類(lèi)型。
(5)用戶(hù)根據(jù)各個(gè)網(wǎng)站特有的頁(yè)面規(guī)則,可以抽取出網(wǎng)頁(yè)目標(biāo)區(qū)域的數(shù)據(jù),然后將這些數(shù)據(jù)交給拓展模塊,拓展模塊可以是數(shù)據(jù)持久化模塊、漢語(yǔ)分詞處理模塊等。
(6)解析模塊解析出頁(yè)面的所有URL后,會(huì)將之傳給過(guò)濾模塊,如果某個(gè)URL滿(mǎn)足過(guò)濾條件且尚未添加進(jìn)任務(wù)隊(duì)列,則將該URL添加至任務(wù)隊(duì)列的隊(duì)尾;否則拋棄該URL。endprint
(7)從全局來(lái)看,聚焦爬蟲(chóng)的所有處理線(xiàn)程都必須接受線(xiàn)程池的管理。線(xiàn)程池所有線(xiàn)程均執(zhí)行完畢時(shí)代表爬蟲(chóng)程序完成了當(dāng)前層級(jí)的所有爬取操作。
2 聚焦爬蟲(chóng)網(wǎng)絡(luò)信息提取的實(shí)現(xiàn)
采用JAVA語(yǔ)言,實(shí)現(xiàn)基于目標(biāo)網(wǎng)頁(yè)特征和廣度優(yōu)先搜索策略的多線(xiàn)程聚焦爬蟲(chóng)程序框架。通過(guò)使用此框架可以簡(jiǎn)單、高效地完成具備個(gè)性化需求的爬蟲(chóng)程序的開(kāi)發(fā)定制。
2.1 URL過(guò)濾規(guī)則
爬蟲(chóng)程序爬取的網(wǎng)頁(yè)中,往往存在著許多與主題毫無(wú)關(guān)系的鏈接,比如廣告鏈接和無(wú)關(guān)外鏈等。正規(guī)的網(wǎng)站網(wǎng)頁(yè)上URL的命名和主題會(huì)有一定的相關(guān)性,因此爬蟲(chóng)程序抽取的URL做正則篩選,篩選出所需網(wǎng)頁(yè)的URL。程序中定義了URL的抽取規(guī)則類(lèi)RegexRule,要求抽取的URL必須至少滿(mǎn)足一條正正則,不能滿(mǎn)足任何一條負(fù)正則。
2.2 URL抽取方法
網(wǎng)頁(yè)解析時(shí),程序?qū)⒔邮盏腍TML轉(zhuǎn)換為org.jsoup.nodes.Document類(lèi)。對(duì)URL的抽取,以整頁(yè)Document、正則規(guī)則RegexRule和網(wǎng)頁(yè)CSS布局為篩選條件,提供功能函數(shù)進(jìn)行抽取。
2.3 線(xiàn)程池的使用
線(xiàn)程池中的FixedThreadPool模式使用一個(gè)優(yōu)先固定數(shù)目的線(xiàn)程池來(lái)處理多線(xiàn)程任務(wù)。開(kāi)啟一定數(shù)目的線(xiàn)程來(lái)處理所有任務(wù),一旦有線(xiàn)程處理完了當(dāng)前任務(wù),會(huì)被用來(lái)處理新的任務(wù)。
2.4 分層數(shù)據(jù)爬取
根據(jù)用戶(hù)需要的數(shù)據(jù)層次深度,分層爬取數(shù)據(jù)。在抓取線(xiàn)程FetcherThread中,程序每次從任務(wù)隊(duì)列FetchQueue的隊(duì)頭取出一個(gè)URL,并對(duì)該URL所在網(wǎng)頁(yè)進(jìn)行爬取,然后將從該網(wǎng)頁(yè)抽取的URL存到臨時(shí)任務(wù)隊(duì)列TempQueue。即當(dāng)前層級(jí)新抽取的URL都會(huì)放到臨時(shí)任務(wù)隊(duì)列中,完成當(dāng)前層級(jí)的爬取任務(wù)后,任務(wù)隊(duì)列為空。最后,將臨時(shí)隊(duì)列中的數(shù)據(jù)移至任務(wù)隊(duì)列中。
2.5 隨機(jī)代理IP
有些網(wǎng)站為了防止爬蟲(chóng)程序?qū)W(wǎng)站的關(guān)顧,會(huì)統(tǒng)計(jì)來(lái)源IP,當(dāng)來(lái)源IP對(duì)該網(wǎng)站的訪(fǎng)問(wèn)頻率超過(guò)一定閥值,將其識(shí)別為爬蟲(chóng)程序,并禁止通過(guò)該IP對(duì)其網(wǎng)站進(jìn)行訪(fǎng)問(wèn)。為了應(yīng)對(duì)這種情況,通過(guò)代理IP來(lái)訪(fǎng)問(wèn)具備反爬蟲(chóng)功能的網(wǎng)站。
2.6 使用cookie模擬登錄
有些網(wǎng)站需要用戶(hù)登錄后才能看到完整的網(wǎng)站內(nèi)容。因此,在發(fā)送請(qǐng)求時(shí),同時(shí)發(fā)送賬戶(hù)登錄后的cookie信息,讓爬蟲(chóng)模擬登錄。
2.7 定時(shí)任務(wù)增量爬取
增量爬取,是在爬蟲(chóng)程序運(yùn)行時(shí),判斷抽取的URL所對(duì)應(yīng)的網(wǎng)頁(yè)是否已經(jīng)被解析過(guò),如果已經(jīng)解析過(guò)則將該URL拋棄,沒(méi)有解析過(guò)才進(jìn)行解析,即爬蟲(chóng)程序每次運(yùn)行時(shí)只爬取新更新的內(nèi)容。
2.8 關(guān)鍵詞提取
關(guān)鍵詞提取模塊是調(diào)用漢語(yǔ)分詞系統(tǒng)ICTCLAS的接口來(lái)實(shí)現(xiàn)。為了適應(yīng)不同用戶(hù)的需求和業(yè)務(wù)場(chǎng)景,提供了漢語(yǔ)分詞系統(tǒng)ICTCLAS的本地調(diào)用和遠(yuǎn)程調(diào)用兩種模式。
2.9 聚焦爬蟲(chóng)實(shí)時(shí)提取農(nóng)業(yè)信息
根據(jù)農(nóng)業(yè)信息服務(wù)系統(tǒng)所實(shí)現(xiàn)的信息服務(wù)功能,聚焦爬蟲(chóng)通用框架被設(shè)計(jì)用來(lái)抓取指定網(wǎng)站特定主題的網(wǎng)頁(yè)內(nèi)容。以農(nóng)業(yè)資訊要聞信息服務(wù)為例,系統(tǒng)中主要是提供國(guó)家和廣東省的最新、最全的農(nóng)業(yè)資訊要聞。通過(guò)人工篩選主題網(wǎng)站,廣東省農(nóng)業(yè)資訊選擇具備農(nóng)業(yè)信息權(quán)威性的廣東農(nóng)業(yè)廳網(wǎng)(http://www.gdagri.gov.cn/)作為采集對(duì)象網(wǎng)站。使用聚焦爬蟲(chóng)通用框架來(lái)定制農(nóng)業(yè)要聞爬蟲(chóng),目錄頁(yè)設(shè)置為聚焦爬蟲(chóng)的啟動(dòng)種子,并且根據(jù)網(wǎng)頁(yè)內(nèi)容特征和URL正則特征確定目標(biāo)URL的篩選條件,最后依據(jù)網(wǎng)頁(yè)特征(圖4)完成目標(biāo)數(shù)據(jù)抽取,抽取的數(shù)據(jù)存入相應(yīng)的資源庫(kù)(圖5),抽取結(jié)果如圖6所示。
3 結(jié) 論
隨著互聯(lián)網(wǎng)技術(shù)、信息技術(shù)等高新技術(shù)在農(nóng)業(yè)領(lǐng)域的廣泛應(yīng)用,對(duì)農(nóng)業(yè)農(nóng)村信息服務(wù)的迫切需求。為了讓用戶(hù)能夠在信息海洋中獲取全面、及時(shí)、適用和精煉的農(nóng)業(yè)信息,構(gòu)建基于聚焦爬蟲(chóng)的農(nóng)業(yè)信息服務(wù)平臺(tái)。本研究著重研究了聚焦爬蟲(chóng)的網(wǎng)頁(yè)信息提取框架的設(shè)計(jì)與實(shí)現(xiàn),將聚集爬蟲(chóng)實(shí)時(shí)獲取的農(nóng)業(yè)相關(guān)信息依托農(nóng)業(yè)信息服務(wù)平臺(tái)呈現(xiàn)給各類(lèi)用戶(hù),對(duì)農(nóng)業(yè)農(nóng)村信息服務(wù)的推廣有重要的實(shí)踐意義和推動(dòng)意義。
參考文獻(xiàn):
[1]岳廣飛,何明祥.村鎮(zhèn)農(nóng)業(yè)個(gè)性化信息服務(wù)體系的研究[J].現(xiàn)代情報(bào),2009,29(6):34-37.
[2]鄧秀新.現(xiàn)代農(nóng)業(yè)與農(nóng)業(yè)發(fā)展[J].華中農(nóng)業(yè)大學(xué)學(xué)報(bào):社會(huì)科學(xué)版,2014,33(1):1-4.
[3]李林杰,王紅濤.加快農(nóng)業(yè)科技進(jìn)步推進(jìn)現(xiàn)代農(nóng)業(yè)發(fā)展——基于我國(guó)“十五”時(shí)期農(nóng)業(yè)科技進(jìn)步貢獻(xiàn)率的實(shí)證分析[J].農(nóng)業(yè)現(xiàn)代化研究,2008,29(2):163-167.
[4]張海峰.基于Android智能手機(jī)的農(nóng)業(yè)信息服務(wù)平臺(tái)應(yīng)用展望[J].黑龍江農(nóng)業(yè)科學(xué),2014(8):126-128.
[5]羅長(zhǎng)壽,孫素芬,張峻峰,等.基于查準(zhǔn)率的網(wǎng)頁(yè)信息搜索技術(shù)研究分析[J].情報(bào)雜志,2007,26(3):115-117.
[6]劉建生,周志輝.個(gè)性化搜索引擎綜述[J].計(jì)算機(jī)與數(shù)字工程,2010,38(10):80-81, 94.
[7]韋金河,袁易之,周秋萍,等.江蘇省農(nóng)業(yè)科技服務(wù)超市信息化網(wǎng)絡(luò)設(shè)計(jì)[J].江西農(nóng)業(yè)學(xué)報(bào),2013,25(5):123-126, 131.
[8]陳誠(chéng),廖桂平,史曉慧,等.農(nóng)業(yè)農(nóng)村信息服務(wù)個(gè)性化推送技術(shù)[J].中國(guó)農(nóng)學(xué)通報(bào),2011,27(29):151-156.
[9]韓炳華.關(guān)于農(nóng)業(yè)信息化服務(wù)現(xiàn)代農(nóng)業(yè)的思考[J].黑龍江科技信息,2013(16):290.
[10]方鈺,黃亮,陳詩(shī)平.基于Android系統(tǒng)的農(nóng)業(yè)信息服務(wù)平臺(tái)運(yùn)行模式及發(fā)展前景[J].現(xiàn)代農(nóng)業(yè)科技,2014 (19):340-341, 345.
[11]任鈺,郭芳芳.農(nóng)業(yè)信息服務(wù)需求與影響因素分析[J].山西農(nóng)業(yè)科學(xué),2015,43(8):1018-1020.endprint