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