朱 林
(東南大學成賢學院,江蘇 南京 210088)
基于Web的主題內容提取與存儲系統研究
朱 林
(東南大學成賢學院,江蘇 南京 210088)
為了快速提取網頁中的主題內容,本文對基于Web的主題內容提取與存儲系統進行了較為深入的研究,從系統總的設計思想、架構設計、各個組件的關鍵實現技術等方面進行了分析,使人們可以基于WEB準確且迅速的提取到相應的主題內容,大大提高人們的工作效率。
Web;主題內容提取;存儲系統
本文著錄格式:朱 林. 基于Web的主題內容提取與存儲系統研究[J]. 軟件,2016,37(11):30-32
互聯網上存在大量的Web網頁,每一個網頁通常都會有某個主題,基于Web的主題內容提取與存儲系統可以幫助人們實現對自己所關注主題的網頁內容的快速提取,并且可以存儲起來以方便人們查看那些提取到的內容。可以節省尋找目標網頁與內容的時間,讓人們在茫茫的信息海洋里準確且迅速地提取到有關某個主題的信息,對于人們的工作效率而言具有重大意義。
在設計基于Web的主題內容提取與存儲系統時,可以事先設定一個搜索范圍,即設定搜索的網站,可以按照人們所需要的主題去搜索并顯示出搜索的結果,最后存儲到數據庫中去,而且這個系統可啟可停,在需要的時候啟動它,不需要的時候停止它,不會去無限占用存儲空間[1]。具體設計思想如下:
1.1 多個部分,一個整體
將系統重要的部分分成一個個獨立的小部分,這樣設計起來思路清晰,效率高。就像汽車組裝的流水線一樣,將汽車分為各個部分,最后進行組裝形成最終的成品。這樣的設計使得整個系統的布局很規則,哪個部分負責什么,一看就能知道。而且當程序員進行修改或者查錯時也很節約時間,很方便。最后將每個獨立的小部分連接起來。
1.2 簡單,易操作
功能不要太眼花繚亂,注重實際需求,抓住用戶最需要的功能。用戶可以通過簡單的操作達到提取與存儲的目的,方便的提取到自己所需主題內容并且一眼就能看到結果。用戶不需要清楚系統是如何實現的,只在乎如何用最少的時間來完成操作并獲得結果。這樣的設計對于用戶來說是絕對正確和實用的[2]。
1.3 完全開放,人性化
系統是完全開放的,用戶不僅可以使用現有的
功能而且還能在代碼里編寫設置自己所需要的其它功能,可以使此系統更為強大,十分人性化。
可以使用模塊化的設計方法來設計該基于Web的主題內容提取與存儲系統的架構[3],系統程序模塊化的設計對于某些規模較小的程序來說并不一定能夠帶來什么方便之處,但是對于規模較大或者說后期可以加以拓展的系統程序來說進行模塊化設計還是很有利的。首先,模塊化設計之后各個模塊之間是相對獨立的,其次各個模塊的功能也是相對固定單一的,最后最大的好處就是結構十分清晰,處理問題相當方便。
本系統可以分為網頁下載,頁面解析,URL抓取,提取結果處理和系統數據庫這幾大部分,以及一個簡約的可視化界面,這個界面設計方便了用戶的操作。系統總體的架構圖如圖1所示:

圖1 基于Web的主題內容提取與存儲系統架構
整個系統的結構十分清晰,每個部分具體負責什么工作內容也十分明顯。Spider可以看成一個大容器,系統的各個部分在這個容器里面彼此聯系。從互聯網下載的網頁會傳遞給頁面解析組件進行解析,提取出的主題內容再傳遞給結果處理組件,持久化到系統數據庫。頁面解析時獲取后續URL并傳遞給URL抓取組件存入隊列,通過URL網頁下載得以繼續。
系統的總體功能也是按照各大模塊部分來設計。網頁下載部分的功能是實現從互聯網上下載所需要的網頁,將這些下載好的網頁傳遞給頁面解析組件,頁面解析組件的功能主要有兩個:一是對頁面主題元素的提取,二是獲取系統的后續URL以供網頁下載組件下載網頁。URL抓取組件的功能也是分為兩個,第一個是對于URL待抓取隊列的管理,第二個是URL去重的工作,主要是去除那些相同的URL,以免重復下載相同的網頁,耗費內存。提取結果處理組件的功能也可以分為兩部分來設計:一是對于提取結果的處理,可以使用戶自行選擇結果存儲路徑,此系統只提供存儲到數據庫這個一個存儲路徑,其他的路徑用戶可自行開發。二是提取內容結果持久化到數據庫。將整個系統的數據存儲到系統數據庫中。
系統實現時主要考慮以下四個方面的關鍵技術:
3.1 網頁下載組件實現
網頁下載組件是基于Web的主題內容提取與存儲系統運行的起點,可以利用開源爬蟲工具來編寫,基于HttpClient下載網頁的URL,獲取網頁的源代碼和其他重要屬性信息,下載之后交付給頁面解析組件進行解析。
一般情況下不希望相同的網頁被重復下載多次,這樣就會耗費計算機資源,所以要進行URL的去重處理。URL去重方式很多,主要有基于內存去重、基于數據庫去重、基于磁盤路徑去重和基于布隆過濾器去重等方法。基于Web的主題內容提取與存儲系統可以選用基于內存的去重方式,它是在每次網頁開始下載時,將URL全部存入內存中的哈希表,然后在哈希表中進行查找、匹配等操作。例如當系統需要檢測某個URL是否已經存在時,只需要將這個URL做一次哈希映射,映射之后得到的地址如果重復,就放棄下載,否則,就將這個URL及其對應的哈希地址作為關鍵碼存放進哈希表中。
3.2 網頁解析組件實現
網頁解析組件主要由兩個子模塊組成,一是對網頁頁面元素的提取模塊,二是頁面元素提取完之后的后續鏈接的發現模塊[4]。
主題內容的提取歸根結底是頁面元素的提取,是整個系統的核心部分。用戶需要什么樣的主題內容,系統就去提取頁面中什么樣的主題元素。可以使用正則表達式regex和XML路徑語言XPath這兩種頁面元素提取技術來實現。
系統在運行是不可能一下子保存某個網站所有頁面的URL,所以在頁面解析的基礎上發現后續的新的鏈接對于系統來說也是尤為重要的。例如對于網站的URL特征是"http://www. xxx.com/xxx/ xxx/..../"格式的網頁而言,后續鏈接的選擇在規則上
可以利用了正則表達regex跟蹤和實現。代碼如下:

代碼可以分為兩個部分來看,首先后續鏈接必須符合"(https://www\.com/\w+/\w+)"這個正則表達式,然后通過page.addTargetRequests將符合要求的URL加入到URL待抓取隊列中去。此時就完成了系統中后續鏈接的發現工作。
3.3 URL抓取組件實現
基于Web的主題內容提取與存儲系統使用的是內存隊列來保存和管理待抓取的URL隊列。可以利用了深度優先遍歷策略來實現URL的抓取。所謂深度優先遍歷抓取策略簡單的說就是:系統從給定的第一個URL開始,當系統解析完這個頁面的元素之后,就會轉入下一個網頁,一個鏈接一個鏈接抓取下去[5]。因為頁面解析部分提供了新鏈接的發現功能,所以不需要擔心沒有下一個鏈接來抓取。
3.4 結果處理組件實現
結果處理組件可以對頁面解析組件中提取主題內容元素結束時的結果進行處理,這有利于模塊之間的分離,分離開來之后代碼編寫的結構會十分清晰。另外,對于抽取結果的后期處理可以定制不同的功能,比如結果的保存方式,可以選擇將其保存到文件還是保存到數據庫,如果用戶自己定制了多種保存方式,但只想用里面的一種方式就需要使用如下代碼:

如果說想用兩種方式結合起來的話也很簡單,代碼如下:

如果將提取出的主題內容存儲到數據庫,就可能涉及到數據持久化的問題。數據持久化需要將內存中的數據模型轉變為存儲模型,或者將存儲模型轉變成數據模型。在實現的時候,系統中提取出的主題內容結果都在HashMap對象resultItems中[6],通過以下代碼分別調出主題內容結果:


因為resultItems是一個HashMap形式,即
在將結果持久化到數據庫時需要使用sql插入語句將得到的結果存入數據庫中,其中的sql語句如下:

為了防止注入攻擊,可以使用預編譯的狀態集對象 preparedstatement,參數用setXXX方法進行填裝。完成結果存儲。
本論文從對WEB主題內容準確而快速的提取和存儲出發,首先闡述了系統設計的總體思想,然后基于此設計系統的總體架構,并提出了詳細的系統實現關鍵技術,大大提高系統的性能和人們的工作效率。
[1] 陳立瑋, 馮巖松, 趙東巖. 基于弱監督學習的海量網絡數據關系抽取[J]. 計算機研究與發展. 2013(09).
[2] 王元卓, 靳小龍, 程學旗. 網絡大數據: 現狀與展望[J].計算機學報. 2013(06).
[3] 高樂, 張健, 田賢忠. 基于視覺的Web頁面分塊算法的改進與實現[J]. 計算機系統應用. 2009(04).
[4] 鄭津楊, 樊雨婷. 基于匹配樹方法的RFID 標簽信息歸類方法設計[J]. 軟件, 2015, 36(12): 154-157.
[5] 潘昊,鄂海紅,宋美娜. 布隆過濾器在網頁消重中的應用[J]. 軟件, 2015, 36(12): 166-170.
[6] 楊淙鈞, 艾中良, 劉忠麟, 等. 基于多級列式索引的海量數據高效查詢設計[J]. 軟件, 2016, 37(3): 79-83.
Research on Topic Content Extraction and Storage System Based on Web
ZHU Lin
(Southeast University chengxian College, Nanjing jiangsu Province, 210088, China)
In order to extract web page theme, this paper studied topic extraction and storage system based on Web, analyzes the key system design, architecture design, component technique, so that people can be based on an accurate and rapid extraction of WEB to the corresponding theme and improve the work efficiency of people.
Web; Topic content extraction; Storage system
TP393.092
A
10.3969/j.issn.1003-6970.2016.11.007
2014年江蘇省現代教育技術研究“面向軟件工程課程群的網絡教學支撐系統研究”(2014-R-31607);東南大學成賢學院“青年教師科研發展基金”項目(y380001)。
朱林(1981-),男,碩士,講師,研究方向:軟件工程,電子商務。