專利名稱::一種新聞網(wǎng)頁正文信息的提取方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于網(wǎng)頁信息分析處理
技術(shù)領(lǐng)域:
,具體涉及一種新聞網(wǎng)頁正文信息的提取方法。
背景技術(shù):
:互聯(lián)網(wǎng)的飛速發(fā)展使網(wǎng)絡(luò)即Web上的信息量每天都以驚人的速度增加,許多企業(yè)常常需要各種信息,通常會從網(wǎng)絡(luò)上大規(guī)模搜集信息,因而海量信息的采集成為每個企業(yè)都要關(guān)心的問題。因為目前的信息處理技術(shù)都是針對純文本格式的內(nèi)容的,而Web上的信息主要是以靜態(tài)Html形式存在的,如何把Web上采集的Html形式的信息轉(zhuǎn)換成有利用價值的文本格式的信息,方便后續(xù)的信息處理,成為亟待解決的技術(shù)問題。Web上信息的重要表現(xiàn)形式就是新聞,每天,各大門戶網(wǎng)站都會新增大量的各種新聞,如何采集這些新聞信息,就成為Web信息采集的重要問題。通常,一個新聞網(wǎng)頁中,除了包括主要新聞的內(nèi)容(通常稱之為網(wǎng)頁正文)外,還包括大量的與新聞內(nèi)容無關(guān)的信息(比如廣告、網(wǎng)頁導(dǎo)航信息、版權(quán)信息等,為方便,下面將這些與新聞無關(guān)的信息統(tǒng)稱為廣告),如何從新聞網(wǎng)頁中準(zhǔn)確提取新聞,去除與新聞信息無關(guān)的廣告等其他信息,并最大程度地避免由網(wǎng)頁改版所帶來原網(wǎng)頁抓取方法失效的問題也正是目前需要解決的技術(shù)問題。目前網(wǎng)絡(luò)上絕大部分新聞信息都來自于重要的門戶網(wǎng)站,而這些網(wǎng)站的新聞網(wǎng)頁往往都是由模版后臺生成的,其風(fēng)格和樣式在某段時間內(nèi)是相同的。目前互聯(lián)網(wǎng)上的網(wǎng)頁絕大部分是用HTML語言編寫的。Html語言提供的標(biāo)記主要是用來控制網(wǎng)頁內(nèi)容的顯示格式的,如<table>,<tr>,<td>,<th>是用來繪制表格的;<li>,<ol>,<ul>是用來表示列表的,這些標(biāo)記的使用沒有什么規(guī)律,網(wǎng)頁設(shè)計人員可以隨便設(shè)計。但是不同種類的數(shù)據(jù)一般是放在不同的顯示單元中的。經(jīng)過實際分析各大網(wǎng)站的新聞網(wǎng)頁,結(jié)果顯示需要提取的新聞類網(wǎng)頁中的正文信息絕大部分是存在于Html標(biāo)記“<table>”和“<div>”之中的。傳統(tǒng)的網(wǎng)頁數(shù)據(jù)提取方法,是通過包裝器來提取網(wǎng)頁中感興趣的數(shù)據(jù)的。包裝器根據(jù)信息模式識別知識從固定的信息源中抽取相關(guān)內(nèi)容,并以固定形式加以表示。早期,最簡單的包裝器是通過人工分析欲提取信息的目標(biāo)網(wǎng)頁的結(jié)構(gòu)特征,然后編寫有針對性的軟件來實現(xiàn)的,這種方法人工干預(yù)大,代價很高;后來又引進(jìn)了一些模式識別的算法,但至今,包裝器所需的信息模式識別知識的獲取還是一個費時費力且需要較高智能的工作,因此,目前網(wǎng)頁數(shù)據(jù)抽取研究工作的熱點之一就是探索簡易的獲得構(gòu)造一個包裝器所需規(guī)則的有效方法。目前利用包裝器的系統(tǒng)有TSIMMIS系統(tǒng),XWRAP系統(tǒng)等。TSIMMIS系統(tǒng)中的包裝器需要人工來書寫數(shù)據(jù)抽取規(guī)則。規(guī)則被放在專門的文件中,規(guī)則的形式是[variables,source,pattern]。其中,variables保存抽取結(jié)果,source保存輸入,pattern保存了數(shù)據(jù)在source中的模式信息;variables可以用作后面的規(guī)則的source,文件中最后一個規(guī)則執(zhí)行結(jié)束后,variables中保存了最后的抽取結(jié)果。這種需要人工書寫規(guī)則的方法,費時、費力,而且容易出錯,不易維護(hù)。XWRAP系統(tǒng)中的包裝器采用了半自動化的方法來獲取數(shù)據(jù)抽取規(guī)則。它提供了友好的人機(jī)交互界面,用戶可以根據(jù)系統(tǒng)的引導(dǎo)來完成數(shù)據(jù)抽取規(guī)則的編寫,最終,系統(tǒng)生成一個針對特定數(shù)據(jù)源的用java語言編寫的包裝器。在進(jìn)行數(shù)據(jù)抽取之前,XWRAP系統(tǒng)會對網(wǎng)頁進(jìn)行檢查,修正其中的不符合規(guī)范的語法錯誤和標(biāo)記,并把網(wǎng)頁解析成一棵樹。上面介紹的幾種包裝器都是針對某一個固定網(wǎng)頁架構(gòu)來按固定的規(guī)則或模式來抽取數(shù)據(jù),有比較大的局限性。由于網(wǎng)頁結(jié)構(gòu)的復(fù)雜性及不規(guī)范性,并且一旦網(wǎng)頁改版,網(wǎng)頁架構(gòu)改變,原先適用的包裝器就不能再適用了,這是包裝器的嚴(yán)重缺點,即一個包裝器的實現(xiàn)一般只能針對一個信息源。如上所述,目前的網(wǎng)頁數(shù)據(jù)抽取工具,都需要針對特定的數(shù)據(jù)源來編寫對應(yīng)的包裝器或抽取規(guī)則。所以,如果信息是來自很多信息源,就需要很多包裝器,這樣包裝器的生成及維護(hù)就成了一種復(fù)雜的工作。對于網(wǎng)絡(luò)上大量存在的結(jié)構(gòu)風(fēng)格各不相同的新聞類網(wǎng)頁的正文信息抽取這樣的任務(wù)來說,使用包裝器的代價是很大的。
發(fā)明內(nèi)容針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的是提供一種新聞網(wǎng)頁正文信息的提取方法,該方法對于那些新聞網(wǎng)頁的正文均存在于“<table>”或“<div>”之中的數(shù)據(jù)信息而言,能夠?qū)崿F(xiàn)對由各種不同結(jié)構(gòu)的模版生成的一系列新聞網(wǎng)頁的內(nèi)容的自動提取,能夠提高網(wǎng)頁信息提取的效率和準(zhǔn)確率。為達(dá)到以上目的,本發(fā)明采用的技術(shù)方案是一種新聞網(wǎng)頁正文信息的提取方法,包括以下步驟(1)對網(wǎng)頁進(jìn)行規(guī)范化預(yù)處理,使之符合Html語言標(biāo)準(zhǔn),然后依據(jù)Html語言中的<table>和<div>標(biāo)記,解析所有新聞網(wǎng)頁的Html數(shù)據(jù),得到Html樹;(2)將由從同一站點抓取的由模版生成的并且時間相鄰的兩個網(wǎng)頁的Html樹的各層次數(shù)據(jù)做對比,把坐標(biāo)相同,所包含信息也相同的table節(jié)點或div節(jié)點剔除;(3)將Html樹中各層次的table節(jié)點內(nèi)的數(shù)據(jù)進(jìn)行細(xì)化識別,區(qū)分出標(biāo)題信息和內(nèi)容信息;(4)重組處理后的Html樹中各個節(jié)點內(nèi)的數(shù)據(jù),提取所需的數(shù)據(jù)信息。更進(jìn)一步,為使本發(fā)明具有更好的效果,步驟(1)中解析所有新聞網(wǎng)頁的Html數(shù)據(jù),構(gòu)建Html樹時,采用如下方法1)初始化一個空數(shù)組T,用于保存Html樹中的各個table結(jié)構(gòu)體;所述的table結(jié)構(gòu)體用來表示table節(jié)點,形式如下structTable{此table節(jié)點的坐標(biāo);此table節(jié)點所包含的信息;};上述table節(jié)點的坐標(biāo)即table節(jié)點在整個Html樹中的位置用一個向量來表示,即每一個table節(jié)點均與一個向量v=(n1,n2,n3,…,nk)相對應(yīng),v的第i個分量ni的含義是Html樹中第i層的第ni個節(jié)點;2)初始化一個棧,設(shè)從棧底到棧頂元素依次標(biāo)記為a,a[1],a[2],a[3],…,且0=a=a[1]=a[2]=a[3]=…;并設(shè)置一個棧元素指針p,指向棧頂元素,由于初始時棧內(nèi)沒有元素,可假設(shè)p指向一個虛擬元素a[-1];3)掃描待處理的Html文檔,如果遇到<table>標(biāo)記,即遇到一個新的table節(jié)點時,將棧元素指針p向上移一格,然后將棧元素指針p指向的元素的值加1,設(shè)此時棧元素指針p指向的棧元素為a[k],那么table節(jié)點A的坐標(biāo)就是從棧底元素a到a[k]所構(gòu)成的序列,即向量(a,a[1],a[2],…,a[k]),由此得到table節(jié)點A的坐標(biāo);4)如果遇到</table>節(jié)點,即一個table節(jié)點結(jié)束時,將棧元素指針p向下移一格,此時構(gòu)造一個新table結(jié)構(gòu)體,把當(dāng)前table節(jié)點的坐標(biāo)和所包含的信息存于此table結(jié)構(gòu)體中,然后把此結(jié)構(gòu)體添加到數(shù)組T的末尾位置;5)如果遇到其它字符,設(shè)棧元素指針p指向的棧元素為a[k],那么當(dāng)前正在掃描的table節(jié)點的坐標(biāo)就是從棧底元素a到a[k]所構(gòu)成的序列,即向量(a,a[1],a[2],…,a[k]),把此字符添加到坐標(biāo)為(a,a[1],a[2],…,a[k])的table節(jié)點所包含的信息里。6)如果還沒有掃描到Html文檔末尾,則繼續(xù)掃描,轉(zhuǎn)入第3)步,否則結(jié)束,返回保存了Html樹層次信息的數(shù)組T。更進(jìn)一步,為使本發(fā)明具有更好的效果,步驟(2)中過濾數(shù)據(jù),刪除不需要的數(shù)據(jù)信息時,采用如下的方法設(shè)C和D是由相同模板生成的兩個發(fā)布時間相鄰的新聞網(wǎng)頁,1)經(jīng)過步驟(1)后得到網(wǎng)頁C的結(jié)構(gòu)體數(shù)組為T1;2)經(jīng)過步驟(1)后得到網(wǎng)頁D的結(jié)構(gòu)體數(shù)組為T2;3)遍歷T1中每個table結(jié)構(gòu)體,對T1中每個結(jié)構(gòu)體,設(shè)為S1進(jìn)行如下操作a)遍歷T2,在T2中找到與S1坐標(biāo)值相同的結(jié)構(gòu)體,設(shè)為S2;b)判斷S1包含的信息是否與S2包含的信息中相同(鏈接文字除外),則在T1中刪除S1,在T2中刪除S2。更進(jìn)一步,為使本發(fā)明具有更好的效果,步驟(3)中將Html樹中各層次的table節(jié)點內(nèi)的數(shù)據(jù)進(jìn)行細(xì)化識別,區(qū)分出標(biāo)題信息和內(nèi)容信息時,采用如下的方法1)對table節(jié)點內(nèi)的結(jié)構(gòu)體,判斷該結(jié)構(gòu)體信息中有沒有標(biāo)題元素;2)如果該結(jié)構(gòu)體的標(biāo)題元素多于1個,那么取第一個作為本結(jié)構(gòu)體的標(biāo)題,如果沒有標(biāo)題元素,說明本table結(jié)構(gòu)體標(biāo)題為空。更進(jìn)一步,為使本發(fā)明具有更好的效果,步驟(4)中重組處理后的Html樹中各個節(jié)點內(nèi)的數(shù)據(jù)時,采用如下方法1)初始化一個空字符串S;2)遍歷table結(jié)構(gòu)體數(shù)組T中每個table結(jié)構(gòu)體,把每個table結(jié)構(gòu)體包含的信息添加到S中;3)刪除S中的Html標(biāo)記,刪除Html標(biāo)記后的S即為所需提取的新聞網(wǎng)頁的正文內(nèi)容。本發(fā)明的效果在于采用本發(fā)明所述的方法,能夠處理從通過模板來生成網(wǎng)頁的新聞?wù)军c的信息采集任務(wù),能夠迅速自動提取目標(biāo)新聞網(wǎng)頁的正文內(nèi)容,即使網(wǎng)頁改版,也不需要重新編寫程序,人工干預(yù)大大降低,從而極大地提高了網(wǎng)頁信息提取的效率和準(zhǔn)確率。本發(fā)明之所以具有以上效果,是由于本發(fā)明所述的方法采用了一種的新的解析Html樹的方法,可以高效準(zhǔn)確地知道Html中每個table節(jié)點的坐標(biāo)和所包含的信息;如果網(wǎng)頁改版,也能迅速的解析新模版的樹形結(jié)構(gòu)信息,然后比較由新模版生成的網(wǎng)頁,仍能準(zhǔn)確抽取新聞?wù)男畔?。圖1是本發(fā)明的流程圖;圖2是本發(fā)明具體實施方式中解析Html樹的流程圖。具體實施例方式下面結(jié)合實施例及附圖,進(jìn)一步闡明本發(fā)明所述方法。以從新浪新聞的體育頻道抓取下來的按時間順序排列好的1000個新聞網(wǎng)頁中提取正文信息為例,如圖1所示,一種新聞網(wǎng)頁正文信息的提取方法,包括以下步驟(1)對1000個網(wǎng)頁用第三方網(wǎng)頁凈化工具(比如可以使用tidy工具),進(jìn)行規(guī)范化預(yù)處理,使之符合Html語言標(biāo)準(zhǔn),然后依據(jù)Html語言中的<table>和<div>標(biāo)記,解析所有新聞網(wǎng)頁的Html數(shù)據(jù),得到Html樹;解析所有新聞網(wǎng)頁的Html數(shù)據(jù),構(gòu)建Html樹時,采用如下方法由于在本發(fā)明中,Html標(biāo)記<table>和<div>作用是相同,因此本發(fā)明以<table>為例來闡述,<div>的情形完全類同于<table>。以如下的Html片段為例(如上所述,只標(biāo)出所關(guān)心的<table>節(jié)點,//是注釋),闡明本發(fā)明所涉及的述語<table>//第一個<table>節(jié)點開始Text1<table>//第二個<table>節(jié)點開始Text2<table>//第三個<table>節(jié)點開始Text3</table>//第三個<table>節(jié)點結(jié)束Text4</table>//第二個<table>節(jié)點結(jié)束<table>//第四個<table>節(jié)點開始Text4</table>//第四個<table>節(jié)點結(jié)束</table>//第一個<table>節(jié)點結(jié)束將每個table開始符(以<table>為標(biāo)志)和結(jié)束符(以</table>為標(biāo)志)之間的Html內(nèi)容作為一個table節(jié)點,那么從上面的片段可以看出,每個table節(jié)點里面還可以嵌套其它table節(jié)點,比如第三個table節(jié)點里面就嵌套在第二個table節(jié)點里面。如果一個table節(jié)點A嵌套在另一個table節(jié)點B里面,那么A叫做B的子節(jié)點,B叫做A的父節(jié)點。將位于一個table節(jié)點A開始符和結(jié)束符之間,且不位于此節(jié)點任何子節(jié)點開始符和結(jié)束符之間的Html內(nèi)容叫做A包含的信息。將一個table節(jié)點所對應(yīng)的向量稱為此table節(jié)點在Html樹中的坐標(biāo)。上述Html片段中,第二個table節(jié)點包含的信息為Text2和Text4,第三個table節(jié)點包含的信息為Text3。用直觀的形式表達(dá)Html樹狀層次的嵌套信息,即利用一個向量來表示所關(guān)心的table節(jié)點在整個Html樹中的位置。每一個table節(jié)點均與一個向量v=(n1,n2,n3,…,nk)相對應(yīng),v的第i個分量ni的含義是Html樹中第i層的第ni個節(jié)點。如果一個table節(jié)點對應(yīng)向量是(1,2,3),那么就說明此table節(jié)點是Html樹第一層第一個table節(jié)點的第二個子節(jié)點的第三個子節(jié)點。上述Html片段中第三個和第四個table節(jié)點的坐標(biāo)分別為(1,1,1)和(1,2)。采用結(jié)構(gòu)體的形式來表示table節(jié)點,形式如下structTable{此table節(jié)點的坐標(biāo);此table節(jié)點所包含的信息;};將Html文檔轉(zhuǎn)換為各個table節(jié)點的結(jié)構(gòu)體時,采用如下方法1)初始化一個空數(shù)組T,用于保存各個table結(jié)構(gòu)體;2)初始化一個棧,設(shè)從棧底到棧頂元素依次標(biāo)記為a,a[1],a[2],a[3],…,且0=a=a[1]=a[2]=a[3]=…;并設(shè)置一個棧元素指針p,指向棧頂元素。由于初始時棧內(nèi)沒有元素,可假設(shè)p指向一個虛擬元素a[-1];3)掃描待處理的Html文檔,如果遇到<table>標(biāo)記,即遇到一個新的table節(jié)點時,將棧元素指針p向上移一格,然后將棧元素指針p指向的元素的值加1,設(shè)此時棧元素指針p指向的棧元素為a[k],那么table節(jié)點A的坐標(biāo)就是從棧底元素a到a[k]所構(gòu)成的序列,即向量(a,a[1],a[2],…,a[k]),由此得到table節(jié)點A的坐標(biāo);4)如果遇到</table>節(jié)點,即一個table節(jié)點結(jié)束時,將棧元素指針p向下移一格,此時構(gòu)造一個新table結(jié)構(gòu)體,把當(dāng)前table節(jié)點的坐標(biāo)和所包含的信息存于此table結(jié)構(gòu)體中,然后把此結(jié)構(gòu)體添加到數(shù)組T的末尾位置;5)如果遇到其它字符,設(shè)棧元素指針p指向的棧元素為a[k],那么當(dāng)前正在掃描的table節(jié)點的坐標(biāo)就是從棧底元素a到a[k]所構(gòu)成的序列,即向量(a,a[1],a[2],…,a[k]),把此字符添加到坐標(biāo)為(a,a[1],a[2],…,a[k])的table節(jié)點所包含的信息里。6)如果還沒有掃描到Html文檔末尾,則繼續(xù)掃描,轉(zhuǎn)入第3)步,否則結(jié)束,返回保存了Html樹層次信息的數(shù)組T。(2)將由相同模版生成的Html樹的各層次數(shù)據(jù)做對比,過濾數(shù)據(jù),刪除不需要的數(shù)據(jù)信息;在本實施例中,首先將所有網(wǎng)頁按時間順序排序,設(shè)網(wǎng)頁集合為S,從網(wǎng)頁集合S中取出時間相鄰的兩個網(wǎng)頁W1,W2;解析網(wǎng)頁W1,W2的Html樹,得到每個網(wǎng)頁中table節(jié)點的坐標(biāo)和其所包含的信息;比較W1,W2的Html樹,過濾數(shù)據(jù),刪除不需要的信息,具體采用如下方法1)經(jīng)過步驟(1)后得到網(wǎng)頁W1的結(jié)構(gòu)體數(shù)組為T1;2)經(jīng)過步驟(1)后得到網(wǎng)頁W2的結(jié)構(gòu)體數(shù)組為T2;3)遍歷T1中每個table結(jié)構(gòu)體,對T1中每個結(jié)構(gòu)體,設(shè)為S1進(jìn)行如下操作a)遍歷T2,在T2中找到與S1坐標(biāo)值相同的結(jié)構(gòu)體,設(shè)為S2;b)判斷S1包含的信息是否與S2包含的信息中相同(鏈接文字除外),則在T1中刪除S1,在T2中刪除S2。(3)將Html樹中各層次的table節(jié)點內(nèi)的數(shù)據(jù)進(jìn)行細(xì)化識別,區(qū)分出標(biāo)題信息和內(nèi)容信息;經(jīng)過步驟(2)后,不需要的廣告信息已經(jīng)被刪除,但是還需要對未被過濾的table結(jié)構(gòu)體進(jìn)行內(nèi)容的細(xì)化識別,識別出標(biāo)題信息和內(nèi)容信息,通常新聞的標(biāo)題一般都以大號黑體形式出現(xiàn),這在Html中,是通過<th>,<b>,<strong>,<h1>,<h2>等標(biāo)記實現(xiàn)的,這些元素可稱之為標(biāo)題元素。因此可以采取以下具體步驟,來實現(xiàn)table結(jié)構(gòu)體內(nèi)容的細(xì)化識別。1)對table節(jié)點內(nèi)的結(jié)構(gòu)體,判斷該結(jié)構(gòu)體信息中有沒有標(biāo)題元素;2)如果該結(jié)構(gòu)體的標(biāo)題元素多于1個,那么取第一個作為本結(jié)構(gòu)體的標(biāo)題,如果沒有標(biāo)題元素,說明本table結(jié)構(gòu)體標(biāo)題為空。(4)重組處理后的Html樹中各個節(jié)點內(nèi)的數(shù)據(jù),提取所需的數(shù)據(jù)信息。由步驟(1)得到的table結(jié)構(gòu)體數(shù)組T經(jīng)過步驟(2)和步驟(3)的處理后,數(shù)組T里面的每個結(jié)構(gòu)體的信息都已經(jīng)被識別了,下面要做的就是把這些數(shù)組T里面的每個table結(jié)構(gòu)體所包含的信息合并起來,可采用如下方法1)初始化一個空字符串S;2)遍歷table結(jié)構(gòu)體數(shù)組T中每個table結(jié)構(gòu)體,把每個table結(jié)構(gòu)體包含的信息添加到S中;3)刪除S中的Html標(biāo)記,刪除Html標(biāo)記后的S1即為所需提取的新聞網(wǎng)頁的正文內(nèi)容。試驗效果證明,本方抓取新聞網(wǎng)頁的準(zhǔn)確率很高,在存在改版情況下,仍能達(dá)到98%以上的準(zhǔn)確率,而且時間效率高。本發(fā)明所述的方法并不限于具體實施方式中所述的實施例,本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明的技術(shù)方案得出其他的實施方式,同樣屬于本發(fā)明的技術(shù)創(chuàng)新范圍。權(quán)利要求1.一種新聞網(wǎng)頁正文信息的提取方法,包括以下步驟(1)對網(wǎng)頁進(jìn)行規(guī)范化預(yù)處理,使之符合Html語言標(biāo)準(zhǔn),然后依據(jù)Html語言中的<table>和<div>標(biāo)記,解析所有新聞網(wǎng)頁的Html數(shù)據(jù),得到Html樹;(2)將由相同模版生成的Html樹的各層次數(shù)據(jù)做對比,把坐標(biāo)相同,所包含的有效信息也相同的table節(jié)點或div節(jié)點剔除;(3)將Html樹中各層次的table節(jié)點內(nèi)的數(shù)據(jù)進(jìn)行細(xì)化識別,區(qū)分出標(biāo)題信息和內(nèi)容信息;(4)重組處理后的Html樹中各個節(jié)點內(nèi)的數(shù)據(jù),提取所需的數(shù)據(jù)信息。2.如權(quán)利要求1所述的一種新聞網(wǎng)頁正文信息的提取方法,其特征是步驟(1)中解析所有新聞網(wǎng)頁的Html數(shù)據(jù),構(gòu)建Html樹時,采用如下方法1)初始化一個空數(shù)組T,用于保存Html樹中的各個table結(jié)構(gòu)體;所述的table結(jié)構(gòu)體用來表示table節(jié)點,形式如下structTable{此table節(jié)點的坐標(biāo);此table節(jié)點所包含的信息;};上述table節(jié)點的坐標(biāo)即table節(jié)點在整個Html樹中的位置用一個向量來表示,即每一個table節(jié)點均與一個向量v=(n1,n2,n3,...,nk)相對應(yīng),v的第i個分量ni的含義是Html樹中第i層的第ni個節(jié)點;2)初始化一個棧,設(shè)從棧底到棧頂元素依次標(biāo)記為a,a[1],a[2],a[3],...,且0=a=a[1]=a[2]=a[3]=...;并設(shè)置一個棧元素指針p,指向棧頂元素,由于初始時棧內(nèi)沒有元素,可假設(shè)p指向一個虛擬元素a[-1];3)掃描待處理的Html文檔,如果遇到<table>標(biāo)記,即遇到一個新的table節(jié)點時,將棧元素指針p向上移一格,然后將棧元素指針p指向的元素的值加1,設(shè)此時棧元素指針p指向的棧元素為a[k],那么table節(jié)點A的坐標(biāo)就是從棧底元素a到a[k]所構(gòu)成的序列,即向量(a,a[1],a[2],...,a[k]),由此得到table節(jié)點A的坐標(biāo);4)如果遇到</table>節(jié)點,即一個table節(jié)點結(jié)束時,將棧元素指針p向下移一格,此時構(gòu)造一個新table結(jié)構(gòu)體,把當(dāng)前table節(jié)點的坐標(biāo)和所包含的信息存于此table結(jié)構(gòu)體中,然后把此結(jié)構(gòu)體添加到數(shù)組T的末尾位置;5)如果遇到其它字符,設(shè)棧元素指針p指向的棧元素為a[k],那么當(dāng)前正在掃描的table節(jié)點的坐標(biāo)就是從棧底元素a到a[k]所構(gòu)成的序列,即向量(a,a[1],a[2],...,a[k]),把此字符添加到坐標(biāo)為(a,a[1],a[2],...,a[k])的table節(jié)點所包含的信息里。6)如果還沒有掃描到Html文檔末尾,則繼續(xù)掃描,轉(zhuǎn)入第3)步,否則結(jié)束,返回保存了Html樹層次信息的數(shù)組T。3.如權(quán)利要求1、2所述的一種新聞網(wǎng)頁正文信息的提取方法,其特征是步驟(2)中過濾數(shù)據(jù),刪除不需要的數(shù)據(jù)信息時,采用如下的方法設(shè)C和D是由相同模板生成的兩個發(fā)布時間相鄰的新聞網(wǎng)頁,1)經(jīng)過步驟(1)后得到網(wǎng)頁C的結(jié)構(gòu)體數(shù)組為T1;2)經(jīng)過步驟(1)后得到網(wǎng)頁D的結(jié)構(gòu)體數(shù)組為T2;3)遍歷T1中每個table結(jié)構(gòu)體,對T1中每個結(jié)構(gòu)體,設(shè)為S1并進(jìn)行如下操作a)遍歷T2,在T2中找到與S1坐標(biāo)值相同的結(jié)構(gòu)體,設(shè)為S2;b)判斷S1包含的信息是否與S2包含的信息中相同,鏈接文字除外,如果相同,則在T1中刪除S1,在T2中刪除S2。4.如權(quán)利要求1、2所述的一種新聞網(wǎng)頁正文信息的提取方法,其特征是步驟(3)中將Html樹中各層次的table節(jié)點內(nèi)的數(shù)據(jù)進(jìn)行細(xì)化識別,區(qū)分出標(biāo)題信息和內(nèi)容信息時,采用如下的方法1)對table節(jié)點內(nèi)的結(jié)構(gòu)體,判斷該結(jié)構(gòu)體信息中有沒有標(biāo)題元素;2)如果該結(jié)構(gòu)體的標(biāo)題元素多于1個,那么取第一個作為本結(jié)構(gòu)體的標(biāo)題,如果沒有標(biāo)題元素,說明本table結(jié)構(gòu)體標(biāo)題為空。5.如權(quán)利要求3所述的一種新聞網(wǎng)頁正文信息的提取方法,其特征是步驟(3)中將Html樹中各層次的table節(jié)點內(nèi)的數(shù)據(jù)進(jìn)行細(xì)化識別,區(qū)分出標(biāo)題信息和內(nèi)容信息時,采用如下的方法1)對table節(jié)點內(nèi)的結(jié)構(gòu)體,判斷該結(jié)構(gòu)體信息中有沒有標(biāo)題元素;2)如果該結(jié)構(gòu)體的標(biāo)題元素多于1個,那么取第一個作為本結(jié)構(gòu)體的標(biāo)題,如果沒有標(biāo)題元素,說明本table結(jié)構(gòu)體標(biāo)題為空。6.如權(quán)利要求1所述的一種新聞網(wǎng)頁正文信息的提取方法,其特征是步驟(4)中重組處理后的Html樹中各個節(jié)點內(nèi)的數(shù)據(jù)時,采用如下方法1)初始化一個空字符串S;2)遍歷table結(jié)構(gòu)體數(shù)組T中每個table結(jié)構(gòu)體,把每個table結(jié)構(gòu)體包含的信息添加到S中;3)刪除S中的Html標(biāo)記,刪除Html標(biāo)記后的S1即為所需提取的新聞網(wǎng)頁的正文內(nèi)容。7.如權(quán)利要求5所述的一種新聞網(wǎng)頁正文信息的提取方法,其特征是步驟(4)中重組處理后的Html樹中各個節(jié)點內(nèi)的數(shù)據(jù)時,采用如下方法1)初始化一個空字符串S;2)遍歷table結(jié)構(gòu)體數(shù)組T中每個table結(jié)構(gòu)體,把每個table結(jié)構(gòu)體包含的信息添加到S中;3)刪除S中的Html標(biāo)記,刪除Html標(biāo)記后的S1即為所需提取的新聞網(wǎng)頁的正文內(nèi)容。全文摘要本發(fā)明涉及一種新聞網(wǎng)頁正文信息的提取方法,屬于網(wǎng)頁信息分析處理
技術(shù)領(lǐng)域:
。現(xiàn)有技術(shù)中,通常采用包裝器來抽取網(wǎng)頁中感興趣的數(shù)據(jù),而包裝器是根據(jù)一定的信息模式識別知識從特定的信息源中按固定規(guī)則抽取相關(guān)內(nèi)容,并以特定形式加以表示的,包裝器所需的信息模式識別知識的獲取是一個費時費力且需要較高智能的工作。本發(fā)明所述的方法以堆棧數(shù)據(jù)結(jié)構(gòu),把網(wǎng)頁數(shù)據(jù)的層次結(jié)構(gòu)信息轉(zhuǎn)化為用向量表達(dá),構(gòu)建和解析Html樹,然后將Html樹的各層次數(shù)據(jù)做對比,進(jìn)行數(shù)據(jù)過濾,細(xì)化、識別,和數(shù)據(jù)重組,提取所需的數(shù)據(jù)信息。采用本發(fā)明所述的方法,適用于長期從一固定站點抓取由模版生成的新聞網(wǎng)頁中的新聞信息,速度快,準(zhǔn)確性高。文檔編號G06F17/30GK1786965SQ20051013237公開日2006年6月14日申請日期2005年12月21日優(yōu)先權(quán)日2005年12月21日發(fā)明者舒文兵,吳於茜,肖建國申請人:北大方正集團(tuán)有限公司,北京北大方正技術(shù)研究院有限公司,北京大學(xué)