沈 娜
(宿遷開放大學(xué),江蘇 宿遷 223800)
基于WEB新聞內(nèi)容的信息抽取方法研究
沈 娜
(宿遷開放大學(xué),江蘇 宿遷 223800)
伴隨著互聯(lián)網(wǎng)的飛速發(fā)展,網(wǎng)絡(luò)上的信息資源呈現(xiàn)出井噴態(tài)勢,如何從海量的信息中抽取出自己需要的信息已經(jīng)變得越發(fā)的困難。在研究網(wǎng)頁結(jié)構(gòu)特性、分析HTMLDOM樹結(jié)構(gòu)的基礎(chǔ)上,設(shè)計(jì)了一種基于文本標(biāo)簽屬性的Web新聞信息抽取模型,針對由網(wǎng)頁腳本動態(tài)生成的內(nèi)容的抽取,設(shè)計(jì)了一種腳本動態(tài)生成的網(wǎng)頁信息抽取模型。主要對兩種Web信息抽取技術(shù)的算法模型進(jìn)行了描述,給出了信息抽取的具體實(shí)現(xiàn)過程,并選取了主流的新聞網(wǎng)站進(jìn)行了抽取實(shí)驗(yàn),驗(yàn)證了算法的可行性。
HTMLDOM樹;文本標(biāo)簽屬性;Web新聞;信息抽取
互聯(lián)網(wǎng)的飛速發(fā)展使得WWW成為一個(gè)龐大的信息空間,為人們提供著豐富的信息資源。大量的信息資源通常是以網(wǎng)頁的形式呈現(xiàn)出來,網(wǎng)頁中存在著大量與我們所關(guān)注的內(nèi)容無關(guān)的信息,如廣告信息、版權(quán)信息以及導(dǎo)航條等等,這些我們稱之為“網(wǎng)頁噪音”,通常以鏈接導(dǎo)航的形式出現(xiàn)在主題內(nèi)容周圍或者主題內(nèi)容的中間,這些“噪音”嚴(yán)重影響著人們對于信息的準(zhǔn)確獲取,如何從網(wǎng)頁中抽取出正文內(nèi)容,避開一些不相干的信息干擾,已經(jīng)成為WEB智能領(lǐng)域中的一個(gè)重要課題。
HTML(HyperText Markup Language)是一種超文本標(biāo)記語言,也是構(gòu)成網(wǎng)頁文檔的主要語言,主要用來描述一些結(jié)構(gòu)化的信息,HTML不需要編譯就可以在瀏覽器直接顯示出來,它提供了一種結(jié)構(gòu)化文檔的創(chuàng)建方法,通過定義一套標(biāo)簽來描述網(wǎng)頁的外觀。
以圖1所示的一個(gè)簡單HTML文件為例,HTML中的標(biāo)簽可以分為以下幾類:
(1)呈現(xiàn)性標(biāo)簽,用來描述文本的外觀。常用的標(biāo)簽有〈b〉〈/b〉、〈i〉〈/i〉、〈strong〉〈/strong〉等,這類標(biāo)簽中標(biāo)示的通常是作者希望引起用戶注意的內(nèi)容。例如:〈b〉Hello〈/b〉表示“Hello”在瀏覽器中顯示效果為粗體字;
(2)結(jié)構(gòu)性標(biāo)簽,用來描述文本的意圖。例如:〈body〉〈/body〉標(biāo)示出HTML文檔的主體區(qū);〈h1〉小例子〈/h1〉表示“小例子”為1級標(biāo)題;〈br〉表示文檔換行;
(3)超文本鏈接標(biāo)簽。例如:〈a href=”http://www.sqlele.com”〉宿遷樂樂網(wǎng)〈/a〉,用戶點(diǎn)擊“宿遷樂樂網(wǎng)”即可鏈接到此域名對應(yīng)的頁面。
對于HTML網(wǎng)頁,最常用的結(jié)構(gòu)表示方法是構(gòu)造網(wǎng)頁的標(biāo)簽樹,根據(jù)上面的HTML標(biāo)簽,我們就可以將網(wǎng)頁表示成一棵樹,樹中每個(gè)節(jié)點(diǎn)包含了一對HTML標(biāo)簽間的所有字符,節(jié)點(diǎn)名字即為對應(yīng)的標(biāo)簽名字,這也就是通常我們所說的DOM樹。HTML DOM是一種定義了訪問和操作HTML文檔的標(biāo)準(zhǔn)組件,可以將HTML文檔抽象成為由元素、屬性和文本構(gòu)成的樹結(jié)構(gòu)。由于HTML是一種標(biāo)記語言,不能被計(jì)算機(jī)語言所獲取或編輯,我們可以通過解析HTML文檔,為HTML文檔建立一個(gè)邏輯樹模型,樹的每一個(gè)節(jié)點(diǎn)就是一個(gè)對象,多個(gè)這樣抽象出來的對象,就可使網(wǎng)頁中的元素也能夠被計(jì)算機(jī)語言所獲取和編輯。
圖1 一個(gè)簡單H T ML文件
通過分析研究各大新聞網(wǎng)站的源碼,我們發(fā)現(xiàn)非新聞內(nèi)容通常存在于新聞?wù)膬?nèi)容區(qū)域周圍或是新聞內(nèi)容區(qū)域中間,由于新聞網(wǎng)頁的布局結(jié)構(gòu)與風(fēng)格基本相似,針對某一具體新聞網(wǎng)站的研究發(fā)現(xiàn),新聞?wù)牡腍TML標(biāo)簽非常相似,非新聞內(nèi)容也具有相似的HTML標(biāo)簽。因此,本文設(shè)計(jì)了一種基于文本標(biāo)簽屬性的信息抽取模型,由用戶或是應(yīng)用程序提交一個(gè)初始的URL作為輸入,最終將過濾后的HTML網(wǎng)頁內(nèi)容返回。該模型是建立在一個(gè)簡單的網(wǎng)絡(luò)爬蟲[4-6]程序的基礎(chǔ)上的,首先通過爬蟲獲取新聞頁面的內(nèi)容,然后根據(jù)網(wǎng)頁文本標(biāo)簽的屬性對獲取的新聞內(nèi)容進(jìn)行處理、過濾,從而取得最終的抽取結(jié)果。
網(wǎng)絡(luò)爬蟲在實(shí)現(xiàn)中可借助于一些網(wǎng)頁分析工具對網(wǎng)頁進(jìn)行遍歷和獲取頁面中的文本內(nèi)容,本文使用的是HtmlParser[7-8]分析工具。HtmlParser通過對目標(biāo)網(wǎng)頁建立其邏輯結(jié)構(gòu),然后采用HtmlParser過濾器定位指定的HTML節(jié)點(diǎn)的方式實(shí)現(xiàn)對網(wǎng)頁的信息提取。
以獲取網(wǎng)頁新聞內(nèi)容為例,主要思路是:首先獲取新聞網(wǎng)頁中所有的新聞標(biāo)題和新聞鏈接;然后根據(jù)新聞鏈接去獲取新聞?wù)膬?nèi)容。具體的操作過程分成三步:
第一步,輸入一個(gè)URL作為一個(gè)Parser,使用這個(gè)Parser作為一個(gè)Visitor;
第二步,進(jìn)行節(jié)點(diǎn)的遍歷,并獲取Visitor遍歷后得到的數(shù)據(jù)。這個(gè)過程主要通過
Parser.visitAllNodeWith(Visitor)語句實(shí)現(xiàn),Visitor通過visitor.beginParsing()做解析之前的事情,每取到一個(gè)節(jié)點(diǎn)Node,都會讓該節(jié)點(diǎn)接受該Visitor?;
第三步,Visitor通過visitor.finishedParsing()做解析后的事情。
抽取頁面新聞鏈接的關(guān)鍵代碼如下:
由于提取新聞鏈接需要過濾掉非鏈接的部分,留下鏈接的內(nèi)容,因此在做Parser時(shí)需要通過TagNameFilter filter=new TagNameFilter("A")過濾掉非鏈接的內(nèi)容。由于頁面中的鏈接并非都是新聞鏈接,可能會出現(xiàn)廣告鏈接等一些噪音信息,需要進(jìn)一步對獲取的鏈接進(jìn)行過濾。
基于文本標(biāo)簽屬性的信息抽取模型如圖2所示,其運(yùn)行的步驟描述如下:
步驟1遍歷給定的HTML網(wǎng)頁,分析并得到HTML頁面的所有節(jié)點(diǎn);
步驟2將節(jié)點(diǎn)抽象成HTMLDOM樹,根據(jù)Tag進(jìn)行節(jié)點(diǎn)類型的劃分,例如經(jīng)過劃分可以得到LinkTag,ImageTag,ParagraphTag,InputTag,F(xiàn)rameTag等等;
步驟3分析給定網(wǎng)站,找出新聞?wù)呐c非新聞?wù)牡腍TML節(jié)點(diǎn)的屬性,根據(jù)找到的屬性定制網(wǎng)站,過濾掉與新聞?wù)臒o關(guān)的部分;
步驟4存儲新聞?wù)奈谋尽?/p>
本模型的關(guān)鍵在于通過對特定網(wǎng)頁新聞?wù)牡臉?biāo)簽屬性的分析,定制針對具體網(wǎng)頁的正文抽取算法,由于是針對具體網(wǎng)頁進(jìn)行定制,該模型的執(zhí)行正確率達(dá)到100%,缺點(diǎn)是定制不具有普遍適用性,針對不同的網(wǎng)頁都要進(jìn)行分析進(jìn)而獲得準(zhǔn)確的標(biāo)簽,對定制人員的要求比較高。
圖2 基于文本標(biāo)簽的信息抽取模型
該算法的核心思想是:確定要抽取的HTML標(biāo)簽屬性,針對具體的網(wǎng)頁進(jìn)行定制。實(shí)現(xiàn)過程中需要對網(wǎng)頁文檔解析樹進(jìn)行分析,根據(jù)抽象HTML文檔解析樹的節(jié)點(diǎn)屬性,做進(jìn)一步的抽取。具體的實(shí)現(xiàn)過程如下:
第一步,分析網(wǎng)頁HTML源碼[10]。
以騰訊新聞網(wǎng)頁為例,通過分析網(wǎng)頁正文,我們發(fā)現(xiàn)新聞?wù)牡膬?nèi)容是在“〈div id="Cnt-Main-Article-QQ"bossZone="content"〉”“〈/div〉”之間,根據(jù)“Cnt-Main-Article-QQ”div標(biāo)簽的id屬性就可以定位到騰訊新聞?wù)乃谖恢?。但是騰訊新聞的正文中除了文本內(nèi)容外,還可能存在圖片或視頻等內(nèi)容,為了區(qū)分這些內(nèi)容,可以再進(jìn)一步分析div下面的標(biāo)簽,通過分析,純文本內(nèi)容是在標(biāo)簽“〈P〉”“〈/P〉”之間,而圖片內(nèi)容是在〈img〉標(biāo)簽下顯示。由于騰訊新聞的標(biāo)題是在“〈h1〉”“〈/h1〉”之間,通過過濾掉除〈h1〉之外的標(biāo)簽可以獲得新聞的標(biāo)題。
圖3 網(wǎng)頁文檔解析樹
第二步,抽象HTML節(jié)點(diǎn)。
根據(jù)網(wǎng)頁的HTML標(biāo)記,將網(wǎng)頁表示成一棵樹型結(jié)構(gòu),可以將任何一個(gè)WEB網(wǎng)頁的HTML標(biāo)簽抽象成一棵網(wǎng)頁文檔解析樹,每個(gè)文本標(biāo)簽都可以看成是樹中的一個(gè)節(jié)點(diǎn),如圖3所示。
本模型暫時(shí)忽略各個(gè)標(biāo)簽間的差異,將所有的HTML標(biāo)簽都抽象成節(jié)點(diǎn)Node,當(dāng)需要進(jìn)行節(jié)點(diǎn)過濾的時(shí)候,再按照類型對節(jié)點(diǎn)進(jìn)行分類,劃分得到LinkTag,ImageTag,ParagraphTag,InputTag,SelectTag和FrameTag等類,進(jìn)而得到具有特定屬性特征的Tag,最后對抽象得到的Tag屬性進(jìn)行過濾操作。
第三步,定制網(wǎng)頁抽取算法。
具體的實(shí)現(xiàn)方法描述如下:
步驟1用一個(gè)?URL或是頁面?String做一個(gè)?Parser;
步驟2用這個(gè)?Parser?做一個(gè)?Visitor;
步驟3使用Parser.visitAllNodeWith(Visitor)遍歷節(jié)點(diǎn),并獲取Visitor遍歷得到的數(shù)據(jù);
步驟4根據(jù)標(biāo)簽類型的不同抽象節(jié)點(diǎn)類型;
步驟5根據(jù)標(biāo)簽屬性的不同定制過濾參數(shù)。
例如:
這段代碼的功能是獲得類型為H1的節(jié)點(diǎn),過濾的條件有兩點(diǎn):一是標(biāo)簽名稱為H1;二是標(biāo)簽的id屬性不為空且必須是“artibodyTitle”,使用這個(gè)過濾算法便可以將新浪新聞的正文標(biāo)題抽取出來。
網(wǎng)頁中的內(nèi)容有的是前臺靜態(tài)生成的,有的是后臺數(shù)據(jù)庫動態(tài)生成的,還有的是調(diào)用腳本執(zhí)行后生成,我們可以通過一般的方法,如根據(jù)文本標(biāo)簽屬性過濾得到前兩類網(wǎng)頁的內(nèi)容,但卻無法抽取由JavaScript腳本執(zhí)行后得到的網(wǎng)頁內(nèi)容,因?yàn)榛谖谋緲?biāo)簽屬性的抽取算法只能抽取腳本的內(nèi)容,不能對腳本進(jìn)行執(zhí)行。因此,對于抽取像新聞網(wǎng)頁的評論數(shù)這類由腳本執(zhí)行后生成的內(nèi)容,必須要模擬執(zhí)行腳本后才能抽取內(nèi)容,否則抽取的結(jié)果將會出現(xiàn)錯(cuò)誤。此時(shí)要做的工作就是要模擬一個(gè)瀏覽器,執(zhí)行腳本之后將HTML內(nèi)容返回給用戶,然后再將腳本執(zhí)行后的結(jié)果進(jìn)行過濾得到需要的內(nèi)容。
腳本動態(tài)生成的信息抽取模型如圖4所示,其運(yùn)行的步驟描述如下:
步驟1輸入網(wǎng)頁URL后先提交模擬瀏覽器執(zhí)行網(wǎng)頁腳本,得到網(wǎng)頁腳本執(zhí)行后的HTML內(nèi)容;
步驟2將腳本執(zhí)行后的HTML進(jìn)行遍歷,分析并得到整個(gè)HTML頁面的所有節(jié)點(diǎn);
步驟3把得到的節(jié)點(diǎn)進(jìn)行抽象得到HTML DOM樹,并根據(jù)Tag劃分節(jié)點(diǎn)類型;
步驟4通過分析給定網(wǎng)站,并結(jié)合網(wǎng)站的情況找出需要抽取的元素HTML節(jié)點(diǎn)的屬性,通過找到的屬性對網(wǎng)站進(jìn)行定制,過濾掉與所要內(nèi)容無關(guān)的內(nèi)容;
圖4 腳本動態(tài)生成的網(wǎng)頁信息抽取模型
步驟5存儲抽取的信息內(nèi)容。
本模型的關(guān)鍵一步就是模擬瀏覽器執(zhí)行腳本的過程,由于該模型主要針對的是通過腳本執(zhí)行后得到的網(wǎng)頁內(nèi)容,一般的信息抽取是不能夠執(zhí)行腳本的,抽取得到的結(jié)果也會出錯(cuò)。而通過模擬一個(gè)瀏覽器的瀏覽方式可以有效解決這個(gè)問題,但是由于要模擬瀏覽器執(zhí)行,本模型的執(zhí)行效率將有所下降。
要模擬執(zhí)行網(wǎng)頁腳本需要用到JDIC開源項(xiàng)目中的WebBrowser組件,該組件主要提供了使用系統(tǒng)內(nèi)置瀏覽器的接口,WebBrowser組件可以實(shí)現(xiàn)使用Swing應(yīng)用程序?qū)⒈镜氐臑g覽器嵌入到任何應(yīng)用程序中,WebBrowser提供的是瀏覽器應(yīng)用程序中的呈現(xiàn)部分,該組件并不包含狀態(tài)欄、地址欄等等常見瀏覽器的功能,這些功能可以通過程序來實(shí)現(xiàn)。
要抽去由腳本動態(tài)生成的網(wǎng)頁,需要首先模擬一個(gè)瀏覽器,本算法使用的是JDIC開源項(xiàng)目的WebBrowser組件,該組件的使用方法如下:
其中在定義WebBrowserListener()時(shí)定義了一個(gè)在網(wǎng)頁全部加載完成后執(zhí)行的接口,如下所示:
該接口表示在網(wǎng)頁加載完成后調(diào)用testDOMAPI這個(gè)函數(shù),該函數(shù)如下:
該函數(shù)在網(wǎng)頁加載完成后即是當(dāng)模擬調(diào)用的瀏覽器執(zhí)行網(wǎng)頁腳本后得到了一個(gè)HTML數(shù)據(jù),然后再通過調(diào)用WebBrowser組件的executeScript()執(zhí)行腳本,通過執(zhí)行“document.getElementById('cmtNum').innerHTML”這個(gè)腳本來實(shí)現(xiàn)抽取標(biāo)簽ID為“cmtNum”的文本內(nèi)容。這段代碼就是抽取騰訊新聞評論數(shù)的一個(gè)實(shí)際應(yīng)用。
本文研究的WEB新聞內(nèi)容抽取技術(shù)主要針對兩類網(wǎng)頁內(nèi)容進(jìn)行分析研究:第一類是靜態(tài)的網(wǎng)頁內(nèi)容;第二類是由網(wǎng)頁腳本執(zhí)行后動態(tài)生成的網(wǎng)頁內(nèi)容。文章主要分析了使用網(wǎng)絡(luò)爬蟲技術(shù)實(shí)現(xiàn)網(wǎng)頁新聞內(nèi)容的獲取,描述了使用基于文本標(biāo)簽屬性的信息抽取和過濾的方法,解決了針對網(wǎng)頁腳本動態(tài)生成的網(wǎng)頁內(nèi)容抽取的難題。系統(tǒng)分別選取了新浪網(wǎng)、騰訊網(wǎng)、鳳凰網(wǎng)、人民網(wǎng)、搜狐網(wǎng)、環(huán)球網(wǎng)和網(wǎng)易新聞七大主流新聞網(wǎng)站進(jìn)行了抽取實(shí)驗(yàn),針對不同網(wǎng)站正文的不同特征,系統(tǒng)定制了相應(yīng)的抽取算法,實(shí)驗(yàn)結(jié)果表明,正文抽取的正確率都能夠保持在95%以上。
[1]林子熠,沈備軍.基于統(tǒng)計(jì)的自動化Web新聞?wù)某槿J].計(jì)算機(jī)應(yīng)用與軟件.2010,27(12):232-235.
[2]顧韻華,田偉.基于DOM模型擴(kuò)展的Web信息提取[J].計(jì)算機(jī)科學(xué),2009,36(11):235-237.
[3]胡東東,孟小峰.一種基于樹結(jié)構(gòu)的Web數(shù)據(jù)自動抽取方法[J].計(jì)算機(jī)研究與發(fā)展.2004,41(10):1607-1613.
[4]林樂彬.Inar網(wǎng)絡(luò)爬蟲的設(shè)計(jì)與實(shí)現(xiàn)[D].哈 爾濱:哈爾濱工業(yè)大學(xué),2006.
[5]張志剛,陳靜,李曉明.一種 HTML網(wǎng)頁凈化方法[J].情報(bào)學(xué)報(bào),2004(2).
[6]赫楓齡,左萬利.利用超鏈接信息改進(jìn)網(wǎng)頁爬行器的搜索策略[J].吉林大學(xué)學(xué)報(bào)(信息科學(xué)版),2005,23(l):12-18.
[7]http://htm lparser.sourceforge.net/.
[8]章棟兵.互聯(lián)網(wǎng)輿情分析關(guān)鍵技術(shù)的研究與實(shí)現(xiàn)[D].武漢:武漢理工大學(xué),2010.
[9]朱永盛,武港山.基于Web的新聞信息抽取[J].計(jì)算機(jī)工程,2006,32(10):74-76.
[10]孫育華,韓中元,韓詠,李軍.中文信息檢索中多索引策略融合的研究[J].黑龍江工程學(xué)院學(xué)報(bào)(自然科學(xué)版),2009,23(4):25-26.
(責(zé)任編輯:陳 輝)
Research on Information Extraction Method Based on WEB News Content
SHEN Na
(Suqian Open University,Suqian 223800,China)
With the rapid development of Internet,the information resources of the network present a blowout situation,how to extract information you need from huge amounts of the information has become increasingly difficult.Based on the study of structural characteristics of web pages and the analysis of the HTML DOMtree structure,we have designed a Web news information extraction model based on text label attribute.On the web page script dynamically generated content extraction;we have designed a script dynamically generated Web information extraction model.This paper mainly describes the algorithm of two kinds of Web information extraction technology model,gives the specific implementation process of information extraction,describes the traversal algorithm of the filtering text labels based on DOMtree node,and chooses the mainstream news sites to carry out the extraction experiment to verify the feasibility of the algorithm.
HTMLDOMtree;text tag attributes;Web news;information extraction
TP274
A
123(2015)03-0025-05
2015-04-07
沈 娜(1984-),女,江蘇宿遷人,宿遷開放大學(xué),講師,碩士。研究方向:數(shù)據(jù)庫技術(shù),網(wǎng)絡(luò)安全與應(yīng)用技術(shù)。