文/趙旭 胡璇
面對信息爆炸時代所帶來的大數據沖擊,如何有效獲取與使用網絡數據對于各行各業已經非常重要。網絡搜索作為政府、企業及個人獲取信息的主要途徑,我們必須深刻了解并優化其工作方法與效率。生活中常用的各種搜索引擎如百度、Google等,其最底層的工作為網絡鏈接的爬取,即網絡爬蟲進行數據爬取。
網絡爬蟲又稱網絡蜘蛛,是按照一定的規則,自動地抓取萬維網信息的程序或者腳本。百度、谷歌等搜索引擎使用網絡爬蟲將萬維網上的信息爬取到本地服務器后再排序推送給用戶。傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,采取深度優先或者廣度優先策略不斷的抓取網頁URL并將新爬取的URL放入爬取地址隊列,直到滿足一定的停止條件。
高性能的網絡鏈接爬取算法應當具有很好的可伸縮性、“禮貌”性、可定制及分布式爬取等特性,如何有效的將這些特性融合并實現其價值均衡具有十分重要的意義,特別是對于行業內的信息連接爬取更加重要。
一個好的網絡爬蟲算法應當很好的解決目標的描述、網頁或數據的分析與過濾、URL搜索策略這三個問題。目前的網絡爬蟲算法主要有通用網絡爬蟲算法(General Purpose Web Crawler)、聚焦網絡爬蟲(Focused Web Crawler)、增量式網絡爬蟲(Incremental Web Crawler)、深層網絡爬蟲(Deep Web Crawler),實際的網絡爬蟲系統通常是幾種爬蟲技術相結合實現的。
通用網絡爬蟲爬行對象從一些種子 URL擴充到整個 Web,主要為門戶站點搜索引擎和大型 Web 服務提供商采集數據,爬行范圍和數量巨大,對于爬行速度和存儲空間要求較高,對于爬行頁面的順序要求相對較低,同時由于待刷新的頁面太多,通常采用并行工作方式。聚焦網絡爬蟲又稱主題網絡爬蟲,是指選擇性地爬行那些與預先定義好的主題相關頁面的網絡爬蟲,能夠使用較少硬件和網絡資源實現少而快的網頁爬取,但需要準確定義主題。
增量式網絡爬蟲是指對已下載網頁采取增量式更新,它只爬行新產生的或者已經發生變化網頁,具有較好的實時性,但算法的復雜度和實現難度都有很大的增加。深層網絡爬蟲主要針對那些大部分內容不能通過靜態鏈接獲取的、隱藏在搜索表單后的,只有用戶提交一些關鍵詞才能獲得的 Web 頁面,具有更好的針對性,但問題在于很多時候無法獲知頁面的用戶名及密碼等隱私問題而受到限制。
流行的網絡爬蟲在爬取網頁時針對的是萬維網,但對于某行業內的網絡鏈接爬取時需要綜合考慮各種爬取算法的特點以及實際情況。在進行行業內信息爬取策略的定制時,要充分考慮行業內關鍵詞的設置,不良信息的過濾,“禮貌”爬取防止被屏蔽,避免過度爬取造成信息泛濫等。這里我們對傳統主題爬取算法進行一下優化,提高行業內信息爬取效率。
這里我們為每一個源URL設置一個層數屬性L,每爬取一次,該屬性值折半。具體的,初始URL的層數屬性值L=0,通過第0層爬取到的URL的層數屬性值設置為1,通過第1層爬取到的URL的層數屬性值設置為2,依次類推。對于每一個URL作為源地址進行網絡鏈接爬取時,最多保存爬取到的255/L個URL鏈接,由此來限制爬取到的URL數量與深度。當實際網頁包含的可爬取的鏈接數量n大于255/L時,根據鏈接網頁的主題與開始設置的關鍵字比對的相似度決定保存哪一些鏈接與丟棄哪一些鏈接。具體的操作流程描述如下。
(1)設定行業關鍵字;
(2)設置有限的初始URL并添加至URL隊列,層數全部設置為0;
(3)記錄當前時間t1,檢查爬取到的每一個URL的關鍵字匹配程度后決定是否添加到URL隊列并添加層數值;
(4)從URL隊列中取一個url進行主題爬取,將符合要求的新鏈接添加至URL隊列,其層數設置為L(url)+1;
(5)記錄當前時間t2,判斷t2-t1值是否大于一小時,如果大于一小時則暫停爬取操作一個小時,并執行t1=t2,否則繼續執行第“(3)”步操作。
在進行行業關鍵字設置時,除了設置要設置有關的關鍵字外還要進行敏感詞匯的設置,如果網絡鏈接中包含敏感詞匯則需要直接丟棄該鏈接。另外,如果所用設備計算能力有限的話,時間間隔可以設置的長一些,避免浪費時間資源。
隨著網絡時代的井噴式信息爆發,利用有效的網絡爬蟲算法進行行業內的信息搜索以進一步的分析利用已經必不可免,各大機構與院校均有對網絡爬取策略進行相關的研究。現有各類爬蟲算法均具有自身的優勢與缺點,直接套用無法達到現實目的,如何根據自身實際需要設計自己的網絡鏈接爬取策略并應用至關重要。
上述優化策略中的時間記錄與比對,可以有“禮貌”的進行網絡鏈接爬取,避免被門戶網站的網管系統屏蔽加入和名單。網絡鏈接層數屬性的設置與使用以及將鏈接內容與行業關鍵字進行相似度比較,減少了網絡鏈接爬取時的爬取深度,避免因過度爬取造成的信息泛濫。
通過將本文描述的優化了的網絡鏈接爬取策略應用到電力行業的信息系統管理中,收到了很好的效益,效果很好,驗證了該策略的可用性及效用性。