胡鵬
摘要:互聯網是信息的載體,隨著信息量的迅速增長,給用戶檢索獲取需要的互聯網學習資源增加了難度和時間。因此,學習資源爬蟲是亟待研究與解決的問題。實現學習資源爬蟲系統(tǒng)的關鍵為:首先界定互聯網學習資源的概念、類型、格式形態(tài),然后設計學習資源爬蟲結構以及抓取、解析、去重、下載功能,最后根據系統(tǒng)開發(fā)環(huán)境實現爬蟲結果。借助webdriver、Firfox瀏覽器并結合反網絡爬蟲策略,解決動態(tài)網站腳本與服務器異步交互時的數據丟失問題,進行完整、自動、高效的批量內容下載,優(yōu)化學習資源獲取的準確率與效率,以獲取更有價值的學習資源。
關鍵詞:網絡爬蟲;Web網頁;學習資源
中圖分類號:TP319
文獻標識碼:A
文章編號:16727800(2017)004011103
0引言
隨著信息技術的發(fā)展,互聯網信息量呈指數級爆炸性增長[1],信息淹沒在浩瀚如海的互聯網數據中。用戶要從海量、異構、半異構、動態(tài)數據中快速獲取有價值的學習資源是非常困難的。網絡中學習資源數據量龐大,百度、Google檢索也僅收錄了頁面的1/3,基于漢語自身的復雜性及特點,檢索獲取有價值的學習資源效率低、花費時間長[2]。為此,設計并實現了一個學習資源爬蟲系統(tǒng),使學習資源檢索能快速、準確地達到預期目標。首先對學習資源的概念、類型、格式作一定闡述與界定。學習資源是指學習、教育被應用、參考,并以數字化信息加載的一切對象;學習資源類型是指試題、試卷、案例、問題解答、媒體素材、網絡課程、網絡課件;學習資源格式是指HTML、TXT、Word、PPT、PDF、Excel格式的文本或文檔。
1系統(tǒng)總體設計
聚焦網絡爬蟲(Web Crawler)也稱為主題網絡蜘蛛,是一個自動下載網頁的計算機程序。設置初始的URL(Uniform Resource Location)隊列序列化開始爬取,解析原URL指向的網頁并提取新的URL鏈接與頁面信息,提取過程中對網頁信息、文檔文本進行過濾,剔除重復、不符合要求的URL及文本文檔,下載有關主題信息儲入數據庫,并且不斷遍歷整個過程,直至程序報錯或達到系統(tǒng)的預定規(guī)則而停止[3]。本系統(tǒng)設計學習資源爬蟲結構如圖1所示,根據系統(tǒng)的爬蟲結構,其功能模塊主要包括:網頁抓取、網頁解析、內容去重、內容下載。系統(tǒng)的功能模塊其學習資源爬蟲流程如圖2所示。
2系統(tǒng)功能模塊
2.1網頁抓取
網頁抓取策略包括深度優(yōu)先搜索策略、最佳優(yōu)先搜索策略、廣度優(yōu)先搜索策略。深度優(yōu)先搜索策略在深度大、數據多時,抓取深度、命中率以及抓取效率會大幅下降,同時由于受系統(tǒng)堆棧容量限制,內存也會產生溢出;最佳優(yōu)先策略是一種局部最優(yōu)搜索算法,需結合具體應用進行改進;廣度優(yōu)先搜索策略必須考慮溢出和節(jié)省內存空間的問題,運行速度要比深度優(yōu)先搜索快很多。本文采用廣度優(yōu)先爬蟲策略結合反網絡爬蟲策略,網頁抓取時應配置爬蟲網頁的腳本,配置網頁腳本為XML、Groovy文件,XML用于限定爬蟲的對象范圍,過濾與學習資源無關的信息;Groovy用于限定爬蟲對象內容的范圍,為網頁內容過濾掉“廣告條”以及網頁下方的網站說明等信息。系統(tǒng)啟動時將初始的URL種子集隊列放入Redis SitesQueue臨時數據庫,并不斷地從Redis隊列中抽取URL,解析其DNS,訪問網頁協議HTTP、主機名、路徑,建立網絡通信發(fā)送請求報文,連接Web服務器下載頁面并把頁面內容及鏈接信息保存到本地磁盤上[4],以節(jié)約主機內存的占用,提高網頁抓取效率。
2.2網頁解析
網頁解析是網頁處理的起點,程序發(fā)送請求信息,協議允許訪問頁面則進入頁面框架。通過解析類ParserFile.class對HTML網頁進行DOM解析,其中包括HTML標簽、元素內容、腳本內容、注釋等,用index處理HTML中的標簽、文本、注釋、指令,以及這些符號之間的語法關系,如標簽與標簽、標簽與文本的關系。主要解析標簽包括:正文標題(Title)、正文內容(Article)、鏈接(Link)、作者(Author)、發(fā)布時間(Publishtime)、來源(Source)。用inline處理錨文本對應URL鏈接節(jié)點下的“href”屬性,獲取錨文本與URL之間的對應關系。在DOM解析與URL語法解析的基礎上,即可進行網頁內容的識別操作[5],提取內容進行去重處理,提取鏈接URL進行判斷處理。解析主要代碼如下://判斷fileDir文件的第index個dom中,有無
2.3內容去重
目前Internet的重復網頁約占35%~45%,大部分是內答轉載。爬取這些網頁或者重復內容既占用網絡帶寬又浪費資源,用戶不希望收集一堆內容相同或近似的檢索結果。因此,程序啟動之前已配置網頁腳本為XML、Groovy文件,在URL中限定了爬蟲對象、內容的范圍,剔除了與學習資源無關的信息內容。程序運行時,處理爬蟲過程中存在的重復網址,剔除重復學習資源內容或文本文檔。互聯網學習資源范圍和數量龐大,選擇好的去重策略,能節(jié)約大量爬蟲時間,提高爬蟲效率[67]。程序對Redis緩存內容去重效率相當高,對內存要求也相對較高。同時Redis要關閉VM功能,需要設置好redis.conf配置文件,因為內存使用過高將導致內存溢出。內容去重主要包括正文標題(Title)、正文內容(Article)的去重,是一種高效去重的方法。
2.4內容下載
網頁分為靜態(tài)和動態(tài)。靜態(tài)網頁由HTML代碼生成,頁面的內容、結果基本不會有變化;動態(tài)網頁是相對靜態(tài)的一種網頁編程技術,具有如下幾個特點:交互性、更新性、效果動態(tài)性。由于動態(tài)網站腳本與服務器異步交互易產生數據丟失,需借助Firfox瀏覽器、Webdriver測試工具解決該問題,以進行完整、高效、自動的批量網頁內容下載。系統(tǒng)運行主程序MainQuartz和子程序ListStart、DetailStart時,ListStart子程序根據節(jié)點下載網址的主列表,DetailStart子程序下載列表項內容。List表下載鏈接URL、時間、標題、來源,Article表下載正文內容、發(fā)布時間、來源、作者、描述、關鍵字。下載模塊始終在監(jiān)聽等待爬蟲List表和Article表,如果為空,則處于等待狀態(tài);如果不為空,則下載列表內容,查看HeidiSQL數據庫管理界面,存儲記錄每一條爬取成功的信息。
3系統(tǒng)開發(fā)環(huán)境
硬件配置:CPU為Intel Core i5,內存為8G,硬盤500G。 軟件配置:操作系統(tǒng)為Windows7 64bit,軟件集成開發(fā)工具為Eclipse,開發(fā)語言為Java,數據庫為MySQL、Redis。 本系統(tǒng)需要對Redis緩存內容去重,對內存要求會偏高,因此采用CPU Intel Core i5,內存8G。開發(fā)工具是以Eclipse為集成框架,開發(fā)語言采用Java,因已生成的類包庫可以直接調用,簡單方便。Redis作為緩存數據庫,可大幅提高爬蟲效率,也相對減輕了對內存的需求,很大程度上避免了內存溢出,MySQL為存儲數據庫。
4系統(tǒng)爬蟲結果與結論
根據爬蟲結構、功能設計與系統(tǒng)開發(fā)環(huán)境的配置,爬蟲數據來源于中國教育信息網、百度文庫資源、小學資源網、小教資源網,以及部分研究機構與高校的共享資源等。爬取學習資源Article表數據如圖3所示。由List表和Article表的數據可知,List爬蟲存入數據庫的平均速度為1.3頁/秒,Article表爬蟲存入數據庫的平均速度為6.5頁/秒,學習資源爬蟲的平均速度為4.0頁/秒,準確率在95%左右。系統(tǒng)可大幅提高抓取學習資源的準確率與效率,同時提升了獲取的學習資源的價值性。
爬取的學習資源為HTML、TXT、Word、PPT、PDF、Excel的文本或文檔。其中影響爬蟲的因素有網速、網址服務器以及學習資源的文本或文檔大小等。本文設計的學習資源爬蟲系統(tǒng)采用廣度優(yōu)先爬蟲和反網絡爬蟲策略,通過解析類ParserFile.class對HTML網頁進行DOM解析,通過程序對Redis緩存內容去重,并借助webdriver、Firfox瀏覽器,進行完整、高效、自動的批量網頁內容下載,改善了網絡爬蟲易被屏蔽的缺點,降低了爬蟲難度與任務量,同時解決了動態(tài)網站腳本與服務器異步交互的數據丟失問題,優(yōu)化了學習資源獲取的準確率、效率,從而獲取更多、更有價值的學習資源。
參考文獻:[1]孫立偉,何國輝,吳禮發(fā).網絡爬蟲技術的研究[J].電腦知識與技術,2010(15):41124115.
[2]楊彥軍,郭紹青.ELearning學習資源的交互設計研究[J].現代遠程教育研究,2012(1):6267.
[3]J CHO.Crawling the Web:discovery and maintenance of largescale Web data[J].International Journal of Advances in Engineering Sciences, 2001,3(3):6266.
[4]翁巖青. 網頁抓取策略研究[D].哈爾濱:哈爾濱工程大學,2010.
[5]王璟琦. 基于內容單元的網頁解析與內容提取[D].哈爾濱:哈爾濱工業(yè)大學,2008.
[6]黃聰會,張水平,胡洋.主題Deep Web爬蟲框架研究[J].計算機工程與設計,2010(5):929931,935.
[7]孫濤,曹丙章,邱荷花.基于MapReduce的視屏爬蟲系統(tǒng)研究[J].華中科技大學學報:自然科學版,2015(5):129132.
(責任編輯:黃?。?