陳天文
(濰坊市圖書館,山東 濰坊 261041)
隨著信息技術的迅速發(fā)展,信息的生產(chǎn)、存儲和傳遞方式發(fā)生了革命性的變化,網(wǎng)絡已成為交流和共享信息資源的重要平臺,由于網(wǎng)絡上存在大量有關對文化遺產(chǎn)、學術研究具有重要價值的信息,因此網(wǎng)絡信息資源的采集和保存就顯得非常重要。圖書館作為人類信息資源的主要保存者,對開放存取的網(wǎng)絡信息資源的開發(fā)和利用,已成為圖書館資源建設的重要組成部分,因此構建一個有效的網(wǎng)絡信息資源采集、保存、服務平臺,對網(wǎng)上零散的、無序的信息進行篩選、解構、整合,使之有序化,實現(xiàn)知識增值已成為很多圖書館系統(tǒng)建設所關注的問題。傳統(tǒng)的網(wǎng)絡信息資源采集,主要以人工采集為主,輔之以相應的計算機技術與網(wǎng)絡技術。近年來,信息技術的發(fā)展使自動采集成為網(wǎng)絡信息資源采集和利用的主要手段。自動采集可以減少重復性工作,大大縮短采集時間,節(jié)約人力物力成本,提高工作效率。
Web信息自動采集是利用爬行技術在網(wǎng)頁中自動采集,先指定采集的起始頁面,然后根據(jù)起始頁面中的超鏈接采集延伸頁面的信息。
圖書館網(wǎng)絡服務的快速發(fā)展使圖書館意識到采集Web信息資源、組織專題數(shù)據(jù)庫的重要性和實用性,圖書館對Web信息資源采集曾進行過不同層次的探索和實驗。目前主要采用兩種方法實現(xiàn):
一是手工采集、組織。手工采集是指圖書館工作人員在瀏覽過程中,發(fā)現(xiàn)所需要的信息后,手工下載保存。該方式檢準率高,但效率低下,不能滿足信息時效的要求,面對互聯(lián)網(wǎng)中變化無常的海量信息,圖書館信息內(nèi)容收集員不得不頻繁地登錄各大網(wǎng)站利用搜索引擎進行信息資料的發(fā)現(xiàn)、跟蹤與下載等人為操作。
二是利用成熟的商業(yè)化軟件。如TRS網(wǎng)絡信息雷達系統(tǒng)、清華同方KSpider網(wǎng)絡信息資源采集系統(tǒng)等,這些商業(yè)化軟件的優(yōu)點是技術成熟、操作方便、功能完善,大型圖書館采用的較多,但這類軟件價格昂貴,中、小型圖書館由于經(jīng)費限制難以承受,同時中、小型圖書館對自動采集的功能要求比較單一,所以如何開發(fā)一套適合自己的Web信息采集系統(tǒng),對于圖書館組織網(wǎng)絡信息資源意義重大。
筆者對Web數(shù)據(jù)自動采集的基本思路是通過分析特定網(wǎng)頁源文件信息結構并根據(jù)HTML標識構造正則表達式,從而分離出相關字段及其內(nèi)容,存儲在本地數(shù)據(jù)庫中構造專題網(wǎng)絡信息資源庫。其基本流程為:首先確定信息列表的URL地址,對信息列表頁面的源文件進行分析,通過正則表達式提取出信息列表的超級鏈接集合,根據(jù)提取的超級鏈接集合自動轉到正文部分進行自動采集。
采集、整合的Web信息資源大多來源于公開的網(wǎng)頁資源,即半結構化數(shù)據(jù),半結構化數(shù)據(jù)比較容易提取,因為數(shù)據(jù)中會有一些標識,如htm l文檔,可以利用文檔中的配對標識符來識別、抽取信息。這種方法的缺點是穩(wěn)定性不夠,比如htm l網(wǎng)頁中的標識改變,就不能正常工作了。
Web數(shù)據(jù)自動采集與信息提取是面向不斷增長和變化的某個具體領域的查詢,并且這種查詢是長期的、持續(xù)的。與傳統(tǒng)搜索引擎基于關鍵字查詢不同,信息提取基于查詢,不僅要包含關鍵字,還要匹配各實體之間的關系,如標題、發(fā)布時間、正文等。信息提取屬于技術上的概念,Web數(shù)據(jù)自動采集很大程度要依賴于信息提取的技術,以實現(xiàn)長期的、動態(tài)的追蹤。同時,Web數(shù)據(jù)自動采集不是將Web查詢結果直接輸出給用戶,而且通過進一步的分析處理,查重去噪,整合數(shù)據(jù)等,將半結構化的數(shù)據(jù)變?yōu)榻Y構化的數(shù)據(jù),然后以統(tǒng)一的格式呈現(xiàn)給用戶,本示例是將網(wǎng)頁格式的信息轉化、存儲到ACCESS數(shù)據(jù)庫中。
.NET技術是微軟Web架構主流應用,目前大多Windows應用及Web應用的開發(fā)都以.NET技術為架構;access主要應用于中、小型系統(tǒng)的開發(fā),按照.NET的三層架構開發(fā)的應用程序可以平滑地提升到SQL、ORACLE等大型數(shù)據(jù)庫的應用。
自動采集系統(tǒng)通過對網(wǎng)頁源文件進行分析,分離出信息的標題、發(fā)布時間、發(fā)布人、正文(包含圖片)等內(nèi)容。筆者主要通過構造正則表達式的方法進行提取信息,正則表達式由于難以讀寫,容易出錯,所以找一種工具對正則表達式進行測試是很有必要的,它能夠根據(jù)構造的正則表達式快速檢索出網(wǎng)頁源代碼中的信息塊,我們可以根據(jù)檢索結果不斷修正表達式,直到滿足要求為止。Web信息自動采集過程中用到的主要函數(shù)有:
GetHttpPage:主要功能是根據(jù)信息列表,URL自動提取網(wǎng)頁源代碼返回HTML文檔,該函數(shù)采用.net2.0的WebRequest和WebResponse兩個類實現(xiàn)。
Get_url_Array:按照正規(guī)則匹配相應的數(shù)據(jù),該函數(shù)主要通過MatchCollection類型收集網(wǎng)頁源代碼中與正則表達式相匹配的數(shù)據(jù)集合,然后把數(shù)據(jù)集合分類存儲于本地ACCESS數(shù)據(jù)庫中。
ReplaceSaveRemoteFile:獲取源碼文件中正文部分的圖片并保存到本地根據(jù)日期形成的指定目錄。
GetDateDir:根據(jù)日期創(chuàng)建目錄,如20100320,根據(jù)日期建立目錄或文件增加其靈活性,防止出現(xiàn)重名現(xiàn)象。
GetDateFile:根據(jù)日期創(chuàng)建文件,主要用來保存圖片文件,如20100320001.jpg等。
DefiniteUrl:格式化連接地址。用于相對地址和絕對地址的轉換,該函數(shù)自動判斷獲取的源文件中的URL是絕對地址還是相對地址,根據(jù)具體URL自動組配為絕對地址。
NoHtml:清除所有html格式,如果在應用程序過程中只保留純文本,則調用該函數(shù),如用于提取文章標題。
ScriptHtm l:過濾部分HTML,用于獲取正文內(nèi)容的處理,過濾掉包括字體、大小、顏色、表格的元素,只保留<IMG>表示圖片的標識符。
在以上函數(shù)中,格式化連接地址DefiniteUrl是整個采集系統(tǒng)的核心,在網(wǎng)頁信息列表的超級鏈接中有絕對地址和相對地址,其中相對地址有多種類型。所以在設計DefiniteUrl函數(shù)時必須把相對地址的類型全部包含進去,在采集開始前全部轉換為絕對地址,通過絕對地址直接訪問采集所需要的數(shù)據(jù)。組配絕對地址需要用到首頁地址、列表地址。絕對地址的組配主要有以下幾種類型:
首先確定要采集網(wǎng)頁的首頁地址(域名)和信息列表地址,如下所示:
http://www.nlc.gov.cn和http://www.nlc.gov.cn/book1/book2(例)
類型1:http://www.nlc.gov.cn/syzt/2010/0309/article_463.htm
該類型URL屬于絕對地址,通過GetHttpPage函數(shù)獲取源文件后直接提取所包含的相關信息。
類型2:/syzt/2010/0309/article_463.htm
該類型URL屬于絕對地址,“/”表示根目錄,與類型1描述方法不同,需要在該地址前面加上域名,組配結果為http://www.nlc.gov.cn/syzt/2010/0309/article_463.htm
類型3:./syzt/2010/0309/article_463.htm
該類型URL屬于相對地址,“./”表示當前目錄,需在該地址的前面加上當前列表地址,組配結果為http://www.nlc.gov.cn/book1/book2/syzt/2010/0309/article_463.htm
類型4:../syzt/2010/0309/article_463.htm
該類型URL屬于相對地址,“../”表示上一級目錄,所以必須把列表頁地址按照../的個數(shù)循環(huán)去除子目錄,然后鏈接該地址。本例組配結果為http://www.nlc.gov.cn/book1/syzt/2010/0309/article_463.htm
類型5:syzt/2010/0309/article_463.htm
該類型URL屬于相對址,組配方法同類型3。
信息正文采集圖片,圖片URL同樣按以上規(guī)則組配。
5.1 確定采集的網(wǎng)站首頁地址http://www.nlc.gov.cn
5.2 信息列表頁面地址:http://www.nlc.gov.cn/syzt/boke/index.htm
5.3 對信息列表網(wǎng)頁的源文件進行分析,確定以下項目及正則表達式
5.3.1 網(wǎng)站編碼:常見的編碼方式有GB2312/UTF-8,如果選擇網(wǎng)站編碼不正確,則會出現(xiàn)亂碼現(xiàn)象。國家圖書館網(wǎng)站使用的是GB2312編碼,在網(wǎng)站源文件頭中這一行說明。
5.3.2 獲取信息列表超級鏈接集合正則表達式:/syzt/2010.*?htm,該表達式屬于絕對地址,需按類型2進行組配。
5.3.3 獲取正文標題正則表達式:
在獲取正文標題后,用NoHtml函數(shù)過濾掉HTML格式。
5.3.4 獲取正文內(nèi)容正則表達式:
獲取正文內(nèi)容后用ScriptHtml函數(shù)過濾掉除圖片標識外所有HTML標識。
確定以上正則表達式后,就可以自動采集新聞頻道的標題和正文了。
表1說明了本例用到的正則表達式符號。
表1
5.4 自動入庫
自動入庫的實現(xiàn)是在處理正文數(shù)據(jù)時,通過循環(huán)每解析出一篇正文信息后當即把標題及正文內(nèi)容通過SQL語句插入ACCESS數(shù)據(jù)庫中,同時在入庫過程中需要根據(jù)標題等關鍵字段對采集的數(shù)據(jù)進行過濾、去重,保證數(shù)據(jù)的唯一性和有效性。
網(wǎng)絡Web信息資源的自動采集,為圖書館整合專題信息資源提供了方便,大大提高了圖書館服務效率和服務水平,通過不斷積累,可以形成一個良好的本地信息資源使用環(huán)境,進一步拓展圖書館的服務范圍。
(注:實驗源碼下載地址:http://www.wflib.com/cj.rar)
[1] 蔡焰.網(wǎng)絡信息資源自動采集探討.江西圖書館學刊,2009(2).
[2] 韓群鑫.網(wǎng)絡信息資源采集研究.農(nóng)業(yè)網(wǎng)絡信息,2007(4).