陳建國(guó)
基于Web結(jié)構(gòu)的網(wǎng)站新聞采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
陳建國(guó)1,2
(1. 湖南大學(xué)軟件學(xué)院,湖南,長(zhǎng)沙 410082;2. 廈門(mén)理工學(xué)院,福建,廈門(mén) 361021)
在深入研究網(wǎng)絡(luò)信息采集技術(shù)的基礎(chǔ)上,提出一個(gè)基于Web結(jié)構(gòu)的新聞采集模型。該模型加載采集入口地址后,通過(guò)信息采集和過(guò)濾算法確定新聞列表頁(yè),結(jié)合正則表達(dá)式技術(shù)自動(dòng)識(shí)別新聞內(nèi)容頁(yè)的鏈接地址,訪問(wèn)目標(biāo)新聞內(nèi)容頁(yè),使用采集算法自動(dòng)提取新聞信息數(shù)據(jù)。同時(shí),它可以過(guò)濾在此頁(yè)面中嵌入的廣告等信息。實(shí)踐結(jié)果表明,該模型工作良好,可以自動(dòng)化、高效率地采集新聞信息。
信息采集;Web結(jié)構(gòu);正則表達(dá)式;數(shù)據(jù)挖掘;新聞采集
Web信息采集是指通過(guò)Web頁(yè)面之間的鏈接關(guān)系,從Web上自動(dòng)地獲取頁(yè)面信息,并且隨著鏈接,使用廣度優(yōu)先遍歷算法不斷地向所需要的Web頁(yè)面查找、擴(kuò)展的過(guò)程[1]。
新聞采集是Web信息采集在網(wǎng)絡(luò)新聞?lì)I(lǐng)域的應(yīng)用[2]。其核心實(shí)現(xiàn)過(guò)程如下:由采集入口URL開(kāi)始,將這些URL放入一個(gè)采集隊(duì)列,順序讀取URL以獲取目標(biāo)網(wǎng)頁(yè),調(diào)用采集和過(guò)濾規(guī)則在信息頁(yè)面中進(jìn)行信息識(shí)別和提取,最后將采集得到的新聞信息和相關(guān)數(shù)據(jù)保存到數(shù)據(jù)庫(kù)或其他進(jìn)一步加工。
目前,國(guó)內(nèi)外關(guān)于Web信息采集技術(shù)的研究已取得一定成果,總結(jié)如下:
基于自然語(yǔ)言處理[3]:主要適用于含有大量文本的Web頁(yè)面,將Web文檔視為文本進(jìn)行處理的,抽取的實(shí)現(xiàn)沒(méi)有利用Web文檔獨(dú)特于普通文本的層次特性.獲得有效的抽取規(guī)則需要大量的樣本學(xué)習(xí)[4]。
基于包裝器歸納方式的信息抽取[5]:該系統(tǒng)語(yǔ)義和模式信息是用戶附加的,通過(guò)感興趣信息的左右邊界實(shí)現(xiàn)信息的定位,該方法僅僅使用語(yǔ)義項(xiàng)的上下文來(lái)定位信息并沒(méi)有使用語(yǔ)言的語(yǔ)法約束[6]。
基于本體的信息采集方法[7]:利用對(duì)數(shù)據(jù)本身的描述信息實(shí)現(xiàn)抽取,較少依賴(lài)網(wǎng)頁(yè)結(jié)構(gòu)。
基于查詢(xún)的Web信息提取[8]:使用Web的相關(guān)技術(shù)解決Web的問(wèn)題,由于Web抽取規(guī)則的形式和感興趣信息的定位方式各不相同,因此均不具有通用性。
基于語(yǔ)義信息抽取技術(shù)[9]:由于HTML標(biāo)志缺乏對(duì)數(shù)據(jù)本身的描述,又因?yàn)閿?shù)據(jù)受描述語(yǔ)法,文化區(qū)域和應(yīng)用領(lǐng)域等方面的限制,缺乏足夠的語(yǔ)義信息,因此影響抽取效率和準(zhǔn)確度。
雖然網(wǎng)頁(yè)類(lèi)型和結(jié)構(gòu)不同,但一個(gè)網(wǎng)站中的各頁(yè)面結(jié)構(gòu)具有一些特定規(guī)則,如頁(yè)面內(nèi)容往往是以一種結(jié)構(gòu)化的方式來(lái)組織,所以我們可以根據(jù)web結(jié)構(gòu)進(jìn)行網(wǎng)絡(luò)新聞信息的提取和采集,研究web結(jié)構(gòu),結(jié)合正則表達(dá)式,通過(guò)頁(yè)面結(jié)構(gòu)的模式匹配實(shí)現(xiàn)數(shù)據(jù)提取和收集。本文的主要任務(wù):
(1)設(shè)計(jì)一個(gè)基于Web結(jié)構(gòu)的新聞采集系統(tǒng)模型;
(2)頁(yè)面采集算法,信息塊采集算法和信息塊過(guò)濾算法研究;
(3)實(shí)現(xiàn)基于Web結(jié)構(gòu)的新聞采集系統(tǒng)。
本系統(tǒng)通過(guò)采集入口和頁(yè)面采集算法進(jìn)入新聞列表頁(yè),調(diào)用信息塊采集方法確定新聞內(nèi)容頁(yè)的URL列表,然后自動(dòng)加載URL列表中的目標(biāo)頁(yè),調(diào)用信息采集和過(guò)濾算法反復(fù)采集新聞內(nèi)容的信息,最后存放到相應(yīng)數(shù)據(jù)庫(kù)中。本系統(tǒng)支持采集入口設(shè)置,采集規(guī)則和過(guò)濾規(guī)則設(shè)置,并支持批量采集功能,采集時(shí)間和周期可調(diào)節(jié)。
本系統(tǒng)所用到的信息采集和過(guò)濾算法主要包括以下三種:
(1)頁(yè)面采集算法:通過(guò)URL加載一個(gè)頁(yè)面,然后獲得頁(yè)面的源代碼[10]。該算法將用于加載新聞列表頁(yè)和新聞內(nèi)容頁(yè)。核心算法代碼如下(C#):
(2)信息塊采集算法:該算法接收三個(gè)參數(shù):信息塊代碼、采集開(kāi)始標(biāo)志和采集結(jié)束標(biāo)志;使用正則表達(dá)式技術(shù)進(jìn)行信息匹配,以確定要采集的信息塊。核心算法代碼如下(C#):
(3)信息塊過(guò)濾算法:該算法接收三個(gè)參數(shù):信息塊代碼、過(guò)濾開(kāi)始標(biāo)志和過(guò)濾結(jié)束標(biāo)志;使用正則表達(dá)式技術(shù)進(jìn)行信息匹配,以確定要過(guò)濾的信息塊[11]。
在這里進(jìn)行采集入口的設(shè)置,我們可以設(shè)置一個(gè)新聞網(wǎng)站的主頁(yè)作為采集入口,調(diào)用頁(yè)面采集算法提取新聞列表頁(yè)路徑代碼。
從新聞列表頁(yè)中采集新聞內(nèi)容頁(yè)的鏈接URL的工作有兩個(gè)步驟。首先,刪除無(wú)關(guān)信息,提取新聞列表信息塊代碼,然后從列表信息塊代碼中標(biāo)識(shí)新聞內(nèi)容頁(yè)面地址,制定地址標(biāo)準(zhǔn)格式來(lái)修訂和改善的新聞鏈接地址。
(1)獲取新聞列表頁(yè)代碼
獲取新聞列表頁(yè)面代碼,人工分析和識(shí)別頁(yè)面代碼,找到新聞列表信息塊的起始標(biāo)志和結(jié)束標(biāo)志。調(diào)用采集算法,輸入頁(yè)面代碼、信息塊起始標(biāo)志和結(jié)束標(biāo)志,系統(tǒng)根據(jù)獲得新聞列表信息塊代碼。
(2)新聞鏈接網(wǎng)址采集
對(duì)獲取的信息塊代碼重新進(jìn)行人工分析和識(shí)別,找到新聞鏈接信息的代碼,標(biāo)志起始和結(jié)束標(biāo)記[12-13]。調(diào)用采集和過(guò)濾算法,輸入信息塊代碼列表、新聞鏈接起始標(biāo)志和結(jié)束標(biāo)志,系統(tǒng)自動(dòng)刪除無(wú)關(guān)信息,準(zhǔn)確讀取新聞內(nèi)容頁(yè)鏈接URL列表。
(1)獲取新聞內(nèi)容頁(yè)代碼:調(diào)用采集算法從新聞鏈接URL列表中的各項(xiàng)找到新聞內(nèi)容頁(yè),獲取新聞內(nèi)容頁(yè)面代碼。
(2)新聞信息采集:手動(dòng)分析和識(shí)別頁(yè)面代碼,標(biāo)記各新聞信息塊的開(kāi)始和結(jié)束標(biāo)志,如標(biāo)題、來(lái)源,內(nèi)容,創(chuàng)建時(shí)間,調(diào)用信息采集和過(guò)濾算法,提取有關(guān)的新聞信息,然后保存到數(shù)據(jù)庫(kù)或其他媒介中。
本文采用作者自主開(kāi)發(fā)的“銳龍新聞采集系統(tǒng)”作為實(shí)現(xiàn)案例,“銳龍新聞采集系統(tǒng)”是新聞網(wǎng)站系統(tǒng)的一個(gè)子系統(tǒng)。該系統(tǒng)采用B/S模式,主要用于新聞發(fā)布網(wǎng)站的新聞信息采集工作,方便新聞稿件管理,大大提高新聞稿件編輯的效率和準(zhǔn)確性,有很強(qiáng)的適用性和推廣價(jià)值。
通過(guò)友好的可視化界面進(jìn)行采集入口地址的設(shè)置,界面如圖1所示。本實(shí)例的采集入口設(shè)置如下:http://www.ruilongit.com/News_List.aspx?NT_ID=1。
圖1 采集入口設(shè)置
Fig.1 Acquisition entrances setting
(1)新聞列表頁(yè)采集:分析和確定的新聞列表頁(yè)中的代碼,找到新聞列表信息塊的開(kāi)始和結(jié)束目標(biāo),提取新聞列表,作為新聞內(nèi)容頁(yè)鏈接網(wǎng)址的采集源。
新聞列表信息塊的起始標(biāo)志:
新聞列表信息塊的結(jié)束標(biāo)志:
(2)新聞內(nèi)容頁(yè)URL采集:通過(guò)鏈接地址采集算法進(jìn)行分析和識(shí)別源代碼,找到新聞內(nèi)容頁(yè)鏈接信息塊的開(kāi)始和結(jié)束標(biāo)志,獲取新聞內(nèi)容頁(yè)的URL列表。新聞內(nèi)容頁(yè)URL采集設(shè)置如圖2所示。
新聞內(nèi)容頁(yè)鏈接信息塊的起始標(biāo)志: