專利名稱:一種網(wǎng)頁分割方法
技術(shù)領(lǐng)域:
本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,具體地說,本發(fā)明涉及一種網(wǎng)頁分割方法。
背景技術(shù):
互聯(lián)網(wǎng)技術(shù)大大改變了人們的日常生活方式,人們可以越來越方便的訪問互聯(lián) 網(wǎng)。然而在某些情況下,人們對互聯(lián)網(wǎng)的訪問卻會受到種種制約。由于互聯(lián)網(wǎng)上的網(wǎng)頁大 都是為大顯示器設(shè)計的,一個網(wǎng)頁內(nèi)往往包含很多內(nèi)容,而在某些情況下,人們不需要也不 想要瀏覽整個網(wǎng)頁的信息。例如使用某些小顯示屏的設(shè)備(如手機(jī))上網(wǎng)時,一般來說屏幕無法全部顯示 一個完整的網(wǎng)頁,如果不對網(wǎng)頁分割,將導(dǎo)致手機(jī)屏幕上長長的滾動條和內(nèi)容的混亂顯示, 不利于用戶瀏覽;并且,移動設(shè)備的互聯(lián)網(wǎng)訪問帶寬較低,如果要將整個網(wǎng)頁下載到移動設(shè) 備,必然用戶等待時間增長,而且會產(chǎn)生很大的流量,可是用戶需要的也只是網(wǎng)頁中的某個 部分。再例如在某些場合,用戶可能不能通過眼睛觀看網(wǎng)頁的內(nèi)容,而需要通過語音讀 出網(wǎng)頁的內(nèi)容,如盲人或者用戶在開車時瀏覽網(wǎng)頁。由于朗讀速度遠(yuǎn)遠(yuǎn)低于視覺瀏覽的速 度,從頭至尾的朗讀將耗費大量的時間。所以,當(dāng)前需要一種將單個網(wǎng)頁分割成多個子部分(本文中稱之為塊)的網(wǎng)頁分 割技術(shù),以方便移動用戶或一些特殊應(yīng)用場景下的用戶瀏覽互聯(lián)網(wǎng)網(wǎng)頁。目前的網(wǎng)頁分割大都是對互聯(lián)網(wǎng)網(wǎng)頁做基于文本的平面分割,顯然,這種分割方 案將對原有的網(wǎng)頁結(jié)構(gòu)產(chǎn)生極大的破壞。公開號為CN101655874A的專利申請披露了一種網(wǎng)頁分割方法,該方法包括D0M 樹構(gòu)建步驟,構(gòu)建原始網(wǎng)頁對應(yīng)的DOM樹;脈絡(luò)集合構(gòu)建步驟,分別構(gòu)建該DOM樹中每一 葉子結(jié)點對應(yīng)的脈絡(luò)集合,該脈絡(luò)集合中包含該DOM樹的根結(jié)點、該葉子結(jié)點以及根結(jié)點 與該葉子結(jié)點之間的每一中間結(jié)點;合并步驟,合并各葉子結(jié)點對應(yīng)的脈絡(luò)集合,使合并 后的脈絡(luò)集合所對應(yīng)網(wǎng)頁的大小保持在預(yù)先設(shè)置的閾值以下。本步驟具體內(nèi)容可參考 CN101655874A中的記載。相對于基于文本的平面分割技術(shù),這種基于DOM樹和網(wǎng)頁大小閾 值的分割方案更好地保持了原有的網(wǎng)頁結(jié)構(gòu)。但是,該方案仍然存在一些不足。一、為充分發(fā)揮導(dǎo)航的作用,很多網(wǎng)頁在視覺上往往采用塊狀結(jié)構(gòu)來組織,將屬于 同一主題或分類的超鏈接組織為一個網(wǎng)頁塊。這類頁面的典型代表是各大網(wǎng)站的首頁。DOM 樹的每個葉結(jié)點往往對應(yīng)上述網(wǎng)頁中的一個超鏈接。如圖1所示,主題或分類相同的幾個 超鏈接被集中到網(wǎng)頁多行塊1顯示。如果基于網(wǎng)頁大小閾值對DOM樹的各脈絡(luò)集合進(jìn)行合 并,則可能會把主題或分類不同的超鏈接劃分在一個子網(wǎng)頁,而主題或分類相同的一些鏈 接則可能被劃分到不同的子網(wǎng)頁,這導(dǎo)致子網(wǎng)頁的劃分效果瑣碎且有一定的隨意性,不便 于用戶瀏覽。二、原始網(wǎng)頁中,往往將幾個相關(guān)主題或分類標(biāo)簽組織在一行,為方便描述,下文 中將這種多個(有時也可能是一個)主題或分類標(biāo)簽組成的行稱為主題塊。如圖1所示,對于一個主題塊2,屬于其中主題或分類的多行塊1被安排到該主題塊2附近,這樣主題塊 2可以起到提示用戶的作用。而文獻(xiàn)CN101655874A中,由于基于網(wǎng)頁大小閾值對DOM樹的 各脈絡(luò)集合進(jìn)行合并,可能使主題塊和所對應(yīng)的多行塊脫節(jié),甚至被分到不同的子網(wǎng)頁中。 具體地,文獻(xiàn)CN101655874A中采用基于網(wǎng)頁DOM的脈絡(luò)集合對網(wǎng)頁進(jìn)行劃分,它首先構(gòu)建 第一脈絡(luò)和第二脈絡(luò),然后依據(jù)第一脈絡(luò)中的所有元素所占的網(wǎng)頁區(qū)域大小是否達(dá)到了一 定的閾值,如果達(dá)到了,則把其作為一個單獨的網(wǎng)頁塊,如果未達(dá)到則將第二脈絡(luò)中的一個 葉結(jié)點加入到第一脈絡(luò)中。此種方法容易造成不相關(guān)的內(nèi)容被劃分到同一個塊中,不能保 證所劃分到一塊的內(nèi)容具有相關(guān)性。如附圖3所示,按照網(wǎng)頁大小閾值劃分,其結(jié)果是位于 中間的分塊中既有關(guān)于軍事的內(nèi)容,又有關(guān)于探索的的內(nèi)容。而部分軍事內(nèi)容被劃分到上 一塊,部分探索內(nèi)容被劃分到下一塊。顯然,這種分塊結(jié)果不便于用戶瀏覽。綜上所述,現(xiàn)有技術(shù)的網(wǎng)頁分割方法均會不同程度地破壞原有的網(wǎng)頁結(jié)構(gòu),當(dāng)前 迫切需要一種能夠很好地保持原有的網(wǎng)頁結(jié)構(gòu)的網(wǎng)頁分割方法。
發(fā)明內(nèi)容
因此,本發(fā)明的目的是提供一種能夠很好地保持原有的網(wǎng)頁結(jié)構(gòu)的網(wǎng)頁分割方法。為實現(xiàn)上述發(fā)明目的,本發(fā)明提供了一種網(wǎng)頁分割方法,包括步驟1)獲取待分割網(wǎng)頁的DOM樹;步驟2)遍歷所述DOM樹,將其中每個只包含1個基本多行結(jié)點的結(jié)點作為一個基 本分塊,將每兩個只包含1個基本多行結(jié)點的結(jié)點之間的零散葉結(jié)點分別合成一個基本分 塊;當(dāng)一個基本多行結(jié)點的父結(jié)點被作為一個基本分塊時,該基本多行結(jié)點不再作為一個 基本分塊;所述基本多行結(jié)點是DOM樹中滿足多行性質(zhì)的最小結(jié)點;一個結(jié)點具有多行性質(zhì) 是指該結(jié)點包含至少兩個含有文本的子結(jié)點且這兩個子結(jié)點所對應(yīng)的網(wǎng)頁顯示區(qū)域的縱 坐標(biāo)不同。其中,所述網(wǎng)頁分割方法還包括步驟3)在所述基本分塊中找出主題塊,將主題塊與其后面鄰接的若干個非主題 塊合并;所述主題塊中包含主題或分類標(biāo)簽。其中,所述步驟2)包括下列子步驟21)自底向上遍歷網(wǎng)頁的DOM樹,找出DOM樹中的基本多行結(jié)點;22)自頂向下先序遍歷DOM樹,將其中每個只包含1個基本多行結(jié)點的結(jié)點作為一 個基本分塊,將每兩個只包含1個基本多行結(jié)點的結(jié)點之間的零散葉結(jié)點分別合成一個基 本分塊。其中,所述步驟21)包括下列子步驟211)自底向上遍歷網(wǎng)頁的DOM樹,對每個當(dāng)前結(jié)點,執(zhí)行步驟212);212)記錄當(dāng)前結(jié)點所含的基本多行結(jié)點個數(shù)。其中,所述步驟22)包括下列子步驟221)建立一個結(jié)點列表,自頂向下地先序遍歷DOM樹;222)如果當(dāng)前結(jié)點包含的基本多行結(jié)點個數(shù)為0,將當(dāng)前結(jié)點放入所述結(jié)點列表,否則執(zhí)行步驟223);223)如果當(dāng)前結(jié)點包含的基本多行結(jié)點個數(shù)為1,則執(zhí)行步驟224),否則執(zhí)行步 驟 225);224)將當(dāng)前塊作為一個基本分塊,并將當(dāng)前所述結(jié)點列表中的結(jié)點合并,作為另 一個基本分塊,然后清空所述結(jié)點列表;225)如果當(dāng)前結(jié)點包含的基本多行結(jié)點個數(shù)為1,則對它的所有孩子結(jié)點分別執(zhí) 行步驟222) 225)。其中,所述步驟3)包括下列子步驟31)對每個基本分塊,根據(jù)其字體、文字長度、背景顏色中的一項或多項特征來判 斷該基本分塊是否是主題塊;32)將每個主題塊與其后面鄰接的若干個非主題塊合并。其中,所述步驟32)包括下列子步驟321)取出一個主題塊;322)取與所述主題塊的寬度相等的后面鄰接的若干非主題塊或者其寬度之和與 主題塊的寬度相等的后面鄰接的若干非主題塊,根據(jù)預(yù)設(shè)的條件判斷是否將該主題塊這些 后面鄰接的非主題塊合并,如果是,則合并;如果否,則不合并。其中,所述步驟322)中,所述預(yù)設(shè)的條件是主題塊與后面鄰接的非主題塊的縱 坐標(biāo)距離小于預(yù)設(shè)的閾值。與現(xiàn)有技術(shù)相比,本發(fā)明具有下列技術(shù)效果1)本發(fā)明能夠在分塊的同時很好地保持原有的網(wǎng)頁結(jié)構(gòu),避免打散屬于同一主題 或分類的鏈接,避免主題或分類標(biāo)簽與其對應(yīng)的鏈接分離。2)本發(fā)明的執(zhí)行效率高,容易實現(xiàn)。
以下,結(jié)合附圖來詳細(xì)說明本發(fā)明的實施例,其中圖1示出了基本分塊劃分示意圖;圖2示出了基本分塊合并后的示意圖;圖3示出了現(xiàn)有技術(shù)中一種網(wǎng)頁分割方案的效果示意圖;圖4示出了本發(fā)明一個實施例中基于多行塊的分割步驟的流程圖;圖5示出了本發(fā)明一個實施例中基于主題塊的合并步驟的流程圖;圖6示出了 一個簡單的DOM樹示例;圖7示出了一個網(wǎng)頁實例的分塊結(jié)果的整體示意圖;圖7a、圖7b、圖7c、圖7d分別為圖7的網(wǎng)頁實例的分塊結(jié)果的四個局部放大示意 圖;圖8示出了另一個網(wǎng)頁實例的分塊結(jié)果的整體示意圖;圖8a、圖Sb、圖8c分別為圖8的網(wǎng)頁實例的分塊結(jié)果的三個局部放大示意圖;圖9示出了一個特殊情況下的DOM樹片段;圖10示出了圖9的DOM樹片段所對應(yīng)的網(wǎng)頁顯示區(qū)域。
具體實施例方式本發(fā)明網(wǎng)頁分割方法是一種基于DOM樹對網(wǎng)頁進(jìn)行分割的方法,DOM樹本質(zhì)上是 一棵標(biāo)簽樹,它反映了網(wǎng)頁的結(jié)構(gòu)信息。此外為了獲得較好的分塊效果,在本發(fā)明的一些優(yōu) 選實施例中還引入了少量簡單的視覺信息來輔助網(wǎng)頁分塊。在完成分塊后,可以將每個分 塊作為一個子網(wǎng)頁顯示;也可以仍然將原始網(wǎng)頁作為一個完整網(wǎng)頁,同時將其中每個分塊 與相應(yīng)的控制命令映射,從而方便用戶瀏覽網(wǎng)頁。下面,結(jié)合實施例對本發(fā)明做進(jìn)一步地描 述。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。根據(jù)本發(fā)明的一個實施例,提供了 一種網(wǎng)頁分割方法。該實施例中引入了 “基本多行結(jié)點”的概念,其定義如下定義.基本多行結(jié)點。基本多行結(jié)點采用遞歸定義,如果一個結(jié)點同時滿足下述a、b、c三個條件,則該 結(jié)點是基本多行結(jié)點。a)該結(jié)點不是葉子結(jié)點;b)該結(jié)點的所有子孫結(jié)點都不是基本多行結(jié)點;c)存在該結(jié)點的兩個孩子結(jié)點Nei,Nc2滿足Nci. TextLen Φ 0,Nc2. TextLen Φ 0Nci. Region. LeftTop. y Φ· Nc2. Region. LeftTop. y其中,N. TextLen表示結(jié)點N(包括其孩子結(jié)點)中包含的文本長度,N. Region. TopLeft. y表示結(jié)點N在網(wǎng)頁所占的區(qū)域的左上角的縱坐標(biāo)值。從上述定義可以看出,基本多行結(jié)點包含至少兩個含有文本的結(jié)點,且這兩個結(jié) 點在網(wǎng)頁上顯示的縱坐標(biāo)位置不同,這直接體現(xiàn)了“多行”的性質(zhì)。而且,上述的遞歸定義 保證了基本多行結(jié)點是滿足“多行”性質(zhì)的最小結(jié)點。定義.結(jié)點所含的基本多行結(jié)點個數(shù)。對任一結(jié)點N,其所含的基本多行結(jié)點個數(shù)Iittra(N)(簡稱多行塊屬性)定義為如果N為DOM樹的葉子結(jié)點,則(N) = 0 ;如果N為基本多行結(jié)點,則ηΜ ΒΝ (N) = 1 ;如果N既不是葉子結(jié)點也不是基本多行結(jié)點,則N必然有孩子結(jié)點,設(shè)其所有孩子 結(jié)點的集合為Wc ,則〃—義),即N所含的基本多行結(jié)點個數(shù)為其所有孩 子結(jié)點所含的基本多行結(jié)點個數(shù)之和。上述兩個定義都是遞歸定義,因此,在具體實現(xiàn)時也采用遞歸算法比較方便。在本 實施例中,采用遞歸算法對DOM樹進(jìn)行自下而上的后序遍歷,對遍歷的每個結(jié)點應(yīng)用上述 兩個定義進(jìn)行判斷和計算,即可得到各結(jié)點所含的基本多行結(jié)點個數(shù)。本實施例主要包括兩個步驟基于多行塊的分割和基于主題塊的合并。下面分別 介紹這兩個步驟?!?、基于多行塊的分割通過對網(wǎng)頁DOM樹的遍歷,把網(wǎng)頁分割成多行塊。該方法 只需對DOM樹進(jìn)行一次自底向上和一次自頂向下的遍歷即可完成,具有執(zhí)行效率高容易實 現(xiàn)的優(yōu)點?;诙嘈袎K的分割主要包括以下子步驟步驟Al 對網(wǎng)頁的DOM樹進(jìn)行自底向上的遍歷,在遍歷過程中,根據(jù)基本多行結(jié)點和結(jié)點所包含的基本多行結(jié)點個數(shù)的定義對每一個結(jié)點設(shè)置其nMN(N)的值。步驟A2 建立一個結(jié)點列表,自頂向下地先序遍歷DOM樹,對各結(jié)點分別執(zhí)行如下 步驟1)如果當(dāng)前結(jié)點包含的多行塊屬性為0,將當(dāng)前結(jié)點放入結(jié)點列表,否則執(zhí)行步 馬聚2 ο2)如果當(dāng)前結(jié)點包含的多行塊屬性為1,則執(zhí)行步驟3,否則執(zhí)行步驟4。3)如果結(jié)點列表不為空,則將結(jié)點列表中的結(jié)點合并,使之自成一塊,該分塊作為 原始網(wǎng)頁的一個基本分塊,之后清空結(jié)點列表。同時當(dāng)前塊也自成一塊,該分塊也作為原始 網(wǎng)頁的一個基本分塊。4)如果當(dāng)前結(jié)點的包含的多行塊屬性大于1,則對它的所有孩子結(jié)點分別執(zhí)行步 驟1 4。所有結(jié)點都遍歷一次后,步驟A2完成,此時原始網(wǎng)頁被劃分為多個基本分塊,其 中,每個基本多行結(jié)點各自是一個基本分塊,每兩個基本多行結(jié)點之間的零散葉結(jié)點則被 合成一個基本分塊。圖1示出了一個簡單網(wǎng)頁的分塊結(jié)果,其中用方框圍住的是在第一步 驟所劃分的基本分塊??梢钥闯觯摼W(wǎng)頁被分成了四個基本分塊。二、基于主題塊的合并主題塊具有與其他普通塊不同的特征(如字體大小,文字 長度,背景顏色等與普通塊不同),因此可以根據(jù)這些特征,從基本分塊中找出主題塊,然后 再根據(jù)視覺信息將主題塊與附近的基本分塊合并成一個分塊,從而得到更好的分塊效果。 為方便描述,本文中將除主題塊外的基本分塊稱為非主題塊?;谥黝}塊的合并主要包括以下步驟步驟Bl 對上一步中所得到的所有塊進(jìn)行一次遍歷,并將符合主題塊特征的塊標(biāo) 記為主題塊。步驟B2 遍歷所有主題塊,對當(dāng)前主題塊,找出當(dāng)前主題塊后面鄰接的若干個非 主題塊基本分塊,并分析當(dāng)前主題塊和其附近的非主題塊在網(wǎng)頁中所占的矩形區(qū)域,利用 視覺信息判斷這些塊能否合成更大的塊。如果能,則合成更大的塊。在一個優(yōu)選實施例中, 可以設(shè)定分塊間隔閾值,如果鄰接的非主題塊與當(dāng)前主題塊的寬度相等(寬度指塊的右橫 坐標(biāo)減去左橫坐標(biāo)的值)(或鄰接的若干非主題塊寬度之和與主題塊的寬度相等),且該鄰 接的非主題塊與當(dāng)前主題塊縱坐標(biāo)差值小于所述基本分塊間間隔閾值,則將當(dāng)前主題塊與 鄰近的非主題塊基本分塊合并成一個分塊。圖2示出了圖1所示的分塊合并后的結(jié)果??梢钥闯?,四個基本分塊將被合并為 一個塊。在這個示例中,主題塊下面鄰接的三個分塊的內(nèi)容都圍繞著主題塊,而且它們所占 據(jù)的區(qū)域也和主題塊可以很好的統(tǒng)一到一起。所以,這種將四個基本分塊合并為一個塊的 做法,符合用戶的瀏覽習(xí)慣。根據(jù)本發(fā)明的另一個優(yōu)選實施例,還提供了另一種網(wǎng)頁分割方法,該方法通過網(wǎng) 頁中內(nèi)容多行特征對網(wǎng)頁進(jìn)行分割得到塊,然后通過檢測主題塊的方式合并具有相同主題 的塊。與前一實施例一致,本實施例的網(wǎng)頁分割方法包括基于多行塊的分割和基于主題 塊的合并。下面分別介紹本實施例中的這兩個步驟。一、基于多行塊的分割。如圖4所示,基于多行塊的分割方法包括下列步驟
步驟1 自底向上遍歷DOM樹。設(shè)置結(jié)點的多行塊屬性值。每一個網(wǎng)頁都可以用DOM樹表示,通過瀏覽器提供的接口可以得到網(wǎng)頁的DOM樹 表示。對DOM樹進(jìn)行一次自底向上的遍歷,遍歷過程中如果碰到葉結(jié)點,則將其多行塊屬性 設(shè)置為零。如果碰到非葉結(jié)點,則先對其子結(jié)點進(jìn)行遍歷,并將子結(jié)點的y坐標(biāo)值記錄下。 在該結(jié)點的所有子結(jié)點都遍歷完成之后,判斷其子結(jié)點的多行塊屬性,如果其子結(jié)點中含 有多行塊屬性為1的結(jié)點。那么將其子結(jié)點的所有多行塊屬性之和作為該結(jié)點的多行塊屬 性,否則判斷其子結(jié)點的y坐標(biāo)值是否完全相同,如果相同,設(shè)置該結(jié)點的多行塊屬性為0, 如果不同,則設(shè)置該結(jié)點的多行塊屬性為1。例如,在圖6中結(jié)點1的多行塊屬性為2,結(jié)點 4和6的多行塊屬性為1。步驟2:設(shè)置一個隊列,和一個初始為空的結(jié)點列表。隊列用來在保存在遍歷過程中所需 的父結(jié)點信息。第一個壓入隊列的結(jié)點為DOM樹的根結(jié)點。結(jié)點列表用來存儲遍歷過程中 多行塊屬性為零的結(jié)點。步驟3 判斷隊列是否為空,如果不為空,則進(jìn)入步驟4,如果為空,則沒有需要處 理的結(jié)點了,那么只需把結(jié)點列表里面的結(jié)點合并成一個塊?;诙嘈袎K的分割過程結(jié)束。步驟4 彈出隊列中的一個結(jié)點,該結(jié)點將作為要處理的當(dāng)前結(jié)點。步驟5:判斷當(dāng)前結(jié)點多行塊屬性是否為0,如果當(dāng)前結(jié)點的多行塊屬性為零,則 執(zhí)行步驟6,否則執(zhí)行步驟7。步驟6 將當(dāng)前結(jié)點放入結(jié)點列表中,然后執(zhí)行步驟3。步驟7 判斷當(dāng)前結(jié)點的多行塊屬性是否為1。如果是,執(zhí)行步驟8,否則執(zhí)行步驟 9。步驟8 將結(jié)點列表中的所有網(wǎng)頁合并成一塊,并且當(dāng)前結(jié)點自成一塊。然后執(zhí)行 步驟3。本步驟中,在碰到多行塊屬性大于0的結(jié)點時,將結(jié)點列表中的連續(xù)的多行塊屬性 為零的結(jié)點將被合并為一塊,這樣使得相近的多行塊結(jié)點屬性為零的零散結(jié)點被組織在一 起,以避免分塊過于瑣碎。步驟9 將當(dāng)前結(jié)點的所有子結(jié)點自左向右壓入隊列中,然后執(zhí)行步驟3。執(zhí)行本 步驟,將會對當(dāng)前結(jié)點的所有子結(jié)點遞歸處理,直至將DOM樹中的所有結(jié)點遍歷一次。按照上述步驟1 9,在DOM樹中的所有結(jié)點遍歷完成之后,就得到了原始網(wǎng)頁的 基本分塊。進(jìn)一步地,圖6示出了一個簡單的DOM樹,下面以圖6為例進(jìn)一步說明上述步驟 1 9。初始時執(zhí)行步驟1,結(jié)點1被壓入隊列。經(jīng)過步驟2,3后。在步驟4,結(jié)點1被作為 當(dāng)前結(jié)點,在步驟5執(zhí)行后跳轉(zhuǎn)到步驟7然后跳轉(zhuǎn)到步驟9,將當(dāng)前結(jié)點的所有子結(jié)點壓入 隊列。此時隊列中元素為結(jié)點2,結(jié)點3,結(jié)點4,結(jié)點5,結(jié)點6。步驟9執(zhí)行完成之后,回到步驟3,結(jié)點2將作為當(dāng)前結(jié)點。經(jīng)過步驟3,4后,在步 驟5將被放入結(jié)點列表,回到步驟3。此時隊列中元素為結(jié)點3,結(jié)點4,結(jié)點5,結(jié)點6。同結(jié)點2 —樣,結(jié)點3也會被放入結(jié)點列表,然后回到步驟3。此時隊列中元素為 結(jié)點4,結(jié)點5,結(jié)點7?;氐讲襟E3。在步驟4中,結(jié)點4將被作為當(dāng)前結(jié)點,該結(jié)點的多行塊屬性為1,所 以,將會執(zhí)行步驟5,7,然后執(zhí)行步驟8,在步驟8里,原先被放入結(jié)點的列表的結(jié)點2,3將合并成一塊。結(jié)點列表將被清空。而多行塊屬性為1的結(jié)點4,也將獨立成為一塊。此時, 隊列中元素為結(jié)點5,結(jié)點6。后續(xù)步驟里,結(jié)點5將被放入結(jié)點列表中,隊列中元素為6。然后6將作為當(dāng)前結(jié) 點,結(jié)點5將作為獨立的一塊,而結(jié)點6多行塊屬性為1,也將作為獨立的一塊。需指出的是,雖然本實施例采用隊列這一數(shù)據(jù)結(jié)構(gòu)來保存在遍歷過程中所需的父 結(jié)點信息,但是本領(lǐng)域技術(shù)人員易于理解,也可以使用棧或其它數(shù)據(jù)結(jié)構(gòu)來保存在遍歷過 程中所需的父結(jié)點信息。二、基于主題塊的合并。如圖5所示,本實施例中基于主題塊的合并方法包括下列步驟步驟1 遍歷所有基本分塊,找出主題塊。初始設(shè)置所有基本分塊均未被處理標(biāo) 記。在遍歷過程中,根據(jù)主題塊特征,判斷各個基本分塊是否為主題塊,并將其標(biāo)記出來。其 中,主題塊特征指的是該塊中的字體大小,字體長度和背景的顏色。一般來說,主題塊相對 于非主體塊,具有字體加粗,文字長度較短,背景顏色比較鮮艷(如紅綠等,一般不是白色) 等特征。步驟2 按順序取出當(dāng)前第一個主題塊,執(zhí)行步驟3 4。步驟3:獲取當(dāng)前主題塊后面鄰接的若干個非主題塊。后面鄰接塊是指在DOM樹中 右邊的塊,也就是網(wǎng)頁源代碼中該主題塊代碼后面緊鄰代碼所代表的塊。在網(wǎng)頁源代碼中 位置靠后的源代碼對應(yīng)的就是DOM樹右邊的結(jié)點,因此網(wǎng)頁源代碼決定了所有塊的順序。 表1示意性地給出了網(wǎng)頁的4個分塊的相對位置,表權(quán)利要求
1.一種網(wǎng)頁分割方法,其特征在于,包括下列步驟步驟1)獲取待分割網(wǎng)頁的DOM樹;步驟2)遍歷所述DOM樹,將其中每個只包含1個基本多行結(jié)點的結(jié)點作為一個基本分 塊,將每兩個只包含1個基本多行結(jié)點的結(jié)點之間的零散葉結(jié)點分別合成一個基本分塊; 其中,當(dāng)一個基本多行結(jié)點的父結(jié)點被作為一個基本分塊時,該基本多行結(jié)點不再作為一 個基本分塊。
2.根據(jù)權(quán)利要求1所述的網(wǎng)頁分割方法,其特征在于,所述網(wǎng)頁分割方法還包括步驟幻在所述基本分塊中找出主題塊,將主題塊與其后面鄰接的若干個非主題塊合并;所述主題塊中包含主題或分類標(biāo)簽。
3.根據(jù)權(quán)利要求1所述的網(wǎng)頁分割方法,其特征在于,所述步驟幻包括下列子步驟21)自底向上遍歷網(wǎng)頁的DOM樹,找出DOM樹中的基本多行結(jié)點;22)自頂向下先序遍歷DOM樹,將其中每個只包含1個基本多行結(jié)點的結(jié)點作為一個基 本分塊,將每兩個只包含1個基本多行結(jié)點的結(jié)點之間的零散葉結(jié)點分別合成一個基本分 塊。
4.根據(jù)權(quán)利要求3所述的網(wǎng)頁分割方法,其特征在于,所述步驟21)包括下列子步驟211)自底向上遍歷網(wǎng)頁的DOM樹,對每個當(dāng)前結(jié)點,執(zhí)行步驟212);212)記錄當(dāng)前結(jié)點所含的基本多行結(jié)點個數(shù)。
5.根據(jù)權(quán)利要求4所述的網(wǎng)頁分割方法,其特征在于,所述步驟22)包括下列子步驟221)建立一個結(jié)點列表,自頂向下地先序遍歷DOM樹;222)如果當(dāng)前結(jié)點包含的基本多行結(jié)點個數(shù)為0,將當(dāng)前結(jié)點放入所述結(jié)點列表,否 則執(zhí)行步驟223);223)如果當(dāng)前結(jié)點包含的基本多行結(jié)點個數(shù)為1,則執(zhí)行步驟224),否則執(zhí)行步驟 225);224)將當(dāng)前塊作為一個基本分塊,并將當(dāng)前所述結(jié)點列表中的結(jié)點合并,作為另一個 基本分塊,然后清空所述結(jié)點列表;225)如果當(dāng)前結(jié)點包含的基本多行結(jié)點個數(shù)為1,則對它的所有孩子結(jié)點分別執(zhí)行步 驟 222) 225)。
6.根據(jù)權(quán)利要求2所述的網(wǎng)頁分割方法,其特征在于,所述步驟幻包括下列子步驟31)對每個基本分塊,根據(jù)其字體、文字長度、背景顏色中的一項或多項特征來判斷該 基本分塊是否是主題塊;32)將每個主題塊與其后面鄰接的若干個非主題塊合并。
7.根據(jù)權(quán)利要求6所述的網(wǎng)頁分割方法,其特征在于,所述步驟32)包括下列子步驟321)取出一個主題塊;322)取與所述主題塊的寬度相等的后面鄰接的若干非主題塊或者其寬度之和與所述 主題塊的寬度相等的后面鄰接的若干非主題塊,根據(jù)預(yù)設(shè)的條件判斷是否將該主題塊這些 后面鄰接的非主題塊合并,如果是,則合并;如果否,則不合并。
8.根據(jù)權(quán)利要求7所述的網(wǎng)頁分割方法,其特征在于,所述步驟322)中,所述預(yù)設(shè)的條 件是主題塊與后面鄰接的非主題塊的縱坐標(biāo)距離小于預(yù)設(shè)的閾值。
全文摘要
本發(fā)明提供一種網(wǎng)頁分割方法,其特征在于,包括步驟1)獲取待分割網(wǎng)頁的DOM樹;步驟2)遍歷所述DOM樹,將其中每個只包含1個基本多行結(jié)點的結(jié)點作為一個基本分塊,將每兩個只包含1個基本多行結(jié)點的結(jié)點之間的零散葉結(jié)點分別合成一個基本分塊;其中,當(dāng)一個基本多行結(jié)點的父結(jié)點被作為一個基本分塊時,該基本多行結(jié)點不再作為一個基本分塊;步驟3)在所述基本分塊中找出主題塊,將主題塊與其后面鄰接的若干個非主題塊合并。本發(fā)明能夠在分塊的同時很好地保持原有的網(wǎng)頁結(jié)構(gòu),避免打散屬于同一主題或分類的鏈接,避免主題或分類標(biāo)簽與其對應(yīng)的鏈接分離。本發(fā)明的執(zhí)行效率高,容易實現(xiàn)。
文檔編號G06F17/30GK102073710SQ20101061774
公開日2011年5月25日 申請日期2010年12月31日 優(yōu)先權(quán)日2010年12月31日
發(fā)明者林守勛, 王向東, 鄧鑄輝, 錢躍良, 陳啟華 申請人:中國科學(xué)院計算技術(shù)研究所