本發(fā)明涉及網(wǎng)頁分割技術(shù)領(lǐng)域,具體而言,涉及一種網(wǎng)頁分割方法、裝置及電子設(shè)備。
背景技術(shù):
目前提出了很多網(wǎng)頁分割算法,例如微軟亞洲研究院提出了一種基于視覺特征的網(wǎng)頁分割方法(vips)首先將整個網(wǎng)頁表示成一棵dom樹,根據(jù)顏色大小等網(wǎng)頁版面特征,利用橫豎線條將dom樹節(jié)點所對應(yīng)的分塊在網(wǎng)頁中分隔開來,構(gòu)成網(wǎng)頁的標準分塊。每個節(jié)點通過一致度(doc)來衡量它與其他節(jié)點的語義相關(guān)性,從而將相關(guān)的分塊聚集在一起;利用預(yù)先設(shè)定的一致度(pdoc)作為閾值控制分割粒度,當所有網(wǎng)頁的doc都不小于pdoc時,網(wǎng)頁分割就可以停止。再如基于文檔對象模型(dom)的分割方法:dom樹建樹和查找節(jié)點中的信息將花費大量時間,而且由于部分網(wǎng)頁沒有遵循標準w3c的規(guī)范,這樣可能會導(dǎo)致dom樹的建樹錯誤,因此這一類算法也有很大的局限性?,F(xiàn)有的網(wǎng)頁分割算法需要考慮大量的網(wǎng)頁內(nèi)容和視覺信息,都需要構(gòu)建dom樹,在dom樹的基礎(chǔ)上執(zhí)行網(wǎng)頁分割的算法,時間復(fù)雜度較大。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明實施例的目的在于提供一種網(wǎng)頁分割方法、裝置及電子設(shè)備,以改善上述問題。為了實現(xiàn)上述目的,本發(fā)明實施例采取的技術(shù)方案如下:
第一方面,本發(fā)明實施例提供了一種網(wǎng)頁分割方法,所述方法包括對獲取到的待分割網(wǎng)頁對應(yīng)的第一html文檔進行規(guī)范化處理,獲得規(guī)范化后的第二html文檔;基于所述第二html文檔以及預(yù)設(shè)的行深度計算規(guī)則,獲取所述第二html文檔對應(yīng)的以行號為索引的行深度表;獲取所述第二html文檔中標題內(nèi)容,建立以行號為索引的標題表;基于去除所述第二html文檔中所有標簽后的文本信息及預(yù)設(shè)的行塊定義規(guī)則,獲得所述文本信息對應(yīng)的多個行塊,再計算所述多個行塊各自對應(yīng)的行塊長度,以建立行塊分布函數(shù);基于所述行塊分布函數(shù)及所述以行號為索引的標題表,獲取多個標題塊;基于所述多個標題塊、所述以行號為索引的行深度表及預(yù)設(shè)的合并塊規(guī)則,對所述第一html文檔進行合并塊處理,以實現(xiàn)對所述獲取到的待分割網(wǎng)頁進行分割,重新組織成為新的網(wǎng)頁。
第二方面,本發(fā)明實施例提供了一種網(wǎng)頁分割裝置,所述裝置包括規(guī)范化處理單元、行深度表獲得單元、標題表建立單元、行塊分布函數(shù)建立單元、標題塊獲得單元和合并單元。規(guī)范化處理單元,用于對獲取到的待分割網(wǎng)頁對應(yīng)的第一html文檔進行規(guī)范化處理,獲得規(guī)范化后的第二html文檔。行深度表獲得單元,用于基于所述第二html文檔以及預(yù)設(shè)的行深度計算規(guī)則,獲取所述第二html文檔對應(yīng)的以行號為索引的行深度表。標題表建立單元,用于獲取所述第二html文檔中標題內(nèi)容,建立以行號為索引的標題表。行塊分布函數(shù)建立單元,用于基于去除所述第二html文檔中所有標簽后的文本信息及預(yù)設(shè)的行塊定義規(guī)則,獲得所述文本信息對應(yīng)的多個行塊,再計算所述多個行塊各自對應(yīng)的行塊長度,以建立行塊分布函數(shù)。標題塊獲得單元,用于基于所述行塊分布函數(shù)及所述以行號為索引的標題表,獲取多個標題塊。合并單元,用于基于所述多個標題塊、所述以行號為索引的行深度表及預(yù)設(shè)的合并塊規(guī)則,對所述第一html文檔進行合并塊處理,以實現(xiàn)對所述獲取到的待分割網(wǎng)頁進行分割,重新組織成為新的網(wǎng)頁。
第三方面,本發(fā)明實施例提供了一種電子設(shè)備,所述電子設(shè)備包括處理器和存儲器。所述處理器和所述存儲器通過總線電連接。所述存儲器用于儲存程序。所述處理器用于通過所述總線調(diào)用存儲在所述存儲器中的程序,執(zhí)行:對獲取到的待分割網(wǎng)頁對應(yīng)的第一html文檔進行規(guī)范化處理,獲得規(guī)范化后的第二html文檔;基于所述第二html文檔以及預(yù)設(shè)的行深度計算規(guī)則,獲取所述第二html文檔對應(yīng)的以行號為索引的行深度表;獲取所述第二html文檔中標題內(nèi)容,建立以行號為索引的標題表;基于去除所述第二html文檔中所有標簽后的文本信息及預(yù)設(shè)的行塊定義規(guī)則,獲得所述文本信息對應(yīng)的多個行塊,再計算所述多個行塊各自對應(yīng)的行塊長度,以建立行塊分布函數(shù);基于所述行塊分布函數(shù)及所述以行號為索引的標題表,獲取多個標題塊;基于所述多個標題塊、所述以行號為索引的行深度表及預(yù)設(shè)的合并塊規(guī)則,對所述第一html文檔進行合并塊處理,以實現(xiàn)對所述獲取到的待分割網(wǎng)頁進行分割,重新組織成為新的網(wǎng)頁。
本發(fā)明實施例提供了一種網(wǎng)頁分割方法、裝置及電子設(shè)備,對獲取到的待分割網(wǎng)頁對應(yīng)的第一html文檔進行規(guī)范化處理,獲得規(guī)范化后的第二html文檔;基于所述第二html文檔以及預(yù)設(shè)的行深度計算規(guī)則,獲取所述第二html文檔對應(yīng)的以行號為索引的行深度表;獲取所述第二html文檔中標題內(nèi)容,建立以行號為索引的標題表;基于去除所述第二html文檔中所有標簽后的文本信息及預(yù)設(shè)的行塊定義規(guī)則,獲得所述文本信息對應(yīng)的多個行塊,再計算所述多個行塊各自對應(yīng)的行塊長度,以建立行塊分布函數(shù);基于所述行塊分布函數(shù)及所述以行號為索引的標題表,獲取多個標題塊;基于所述多個標題塊、所述以行號為索引的行深度表及預(yù)設(shè)的合并塊規(guī)則,對所述第一html文檔進行合并塊處理,以實現(xiàn)對所述獲取到的待分割網(wǎng)頁進行分割,重新組織成為新的網(wǎng)頁,減少時間復(fù)雜度和空間復(fù)雜度。
本發(fā)明的其他特征和優(yōu)點將在隨后的說明書闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明實施例了解。本發(fā)明的目的和其他優(yōu)點可通過在所寫的說明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
附圖說明
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,應(yīng)當理解,以下附圖僅示出了本發(fā)明的某些實施例,因此不應(yīng)被看作是對范圍的限定,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。
圖1為本發(fā)明實施例提供的一種電子設(shè)備的結(jié)構(gòu)框圖;
圖2為本發(fā)明第一實施例提供的網(wǎng)頁分割方法的流程圖;
圖3為本發(fā)明第一實施例提供的網(wǎng)頁的行塊分布和網(wǎng)頁內(nèi)容之間呈現(xiàn)的關(guān)系示意圖;
圖4為本發(fā)明第一實施例提供的網(wǎng)頁分割方法的網(wǎng)頁分割效果示意圖;
圖5本發(fā)明第二實施例提供的網(wǎng)頁分割裝置的結(jié)構(gòu)框圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。通常在此處附圖中描述和示出的本發(fā)明實施例的組件可以以各種不同的配置來布置和設(shè)計。因此,以下對在附圖中提供的本發(fā)明的實施例的詳細描述并非旨在限制要求保護的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實施例?;诒景l(fā)明的實施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
應(yīng)注意到:相似的標號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨后的附圖中不需要對其進行進一步定義和解釋。同時,在本發(fā)明的描述中,術(shù)語“第一”、“第二”等僅用于區(qū)分描述,而不能理解為指示或暗示相對重要性。
請參閱圖1,圖1示出了本發(fā)明實施例提供的一種電子設(shè)備100的結(jié)構(gòu)框圖。如圖1所示,電子設(shè)備100可以包括存儲器110、存儲控制器111、處理器112、外設(shè)接口113、輸入輸出單元115、音頻單元116、顯示單元117和網(wǎng)頁分割裝置。
所述存儲器110、存儲控制器111、處理器112、外設(shè)接口113、輸入輸出單元115、音頻單元116、顯示單元117各元件之間直接或間接地電連接,以實現(xiàn)數(shù)據(jù)的傳輸或交互。例如,這些元件之間可以通過一條或多條通訊總線或信號總線實現(xiàn)電連接。網(wǎng)頁分割方法分別包括至少一個可以以軟件或固件(firmware)的形式存儲于存儲器110中的軟件功能模塊,例如所述網(wǎng)頁分割裝置包括的軟件功能模塊或計算機程序。
存儲器110可以存儲各種軟件程序以及模塊,如本申請實施例提供的網(wǎng)頁分割方法及裝置對應(yīng)的程序指令/模塊。處理器112通過運行存儲在存儲器110中的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,即實現(xiàn)本申請實施例中的網(wǎng)頁分割方法。存儲器110可以包括但不限于隨機存取存儲器(randomaccessmemory,ram),只讀存儲器(readonlymemory,rom),可編程只讀存儲器(programmableread-onlymemory,prom),可擦除只讀存儲器(erasableprogrammableread-onlymemory,eprom),電可擦除只讀存儲器(electricerasableprogrammableread-onlymemory,eeprom)等。
處理器112可以是一種集成電路芯片,具有信號處理能力。上述處理器可以是通用處理器,包括中央處理器(centralprocessingunit,簡稱cpu)、網(wǎng)絡(luò)處理器(networkprocessor,簡稱np)等;還可以是數(shù)字信號處理器(dsp)、專用集成電路(asic)、現(xiàn)成可編程門陣列(fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件。其可以實現(xiàn)或者執(zhí)行本申請實施例中的公開的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。
所述外設(shè)接口113將各種輸入/輸入裝置耦合至處理器112以及存儲器110。在一些實施例中,外設(shè)接口113、處理器112以及存儲控制器111可以在單個芯片中實現(xiàn)。在其他一些實例中,他們可以分別由獨立的芯片實現(xiàn)。
輸入輸出單元115用于提供給用戶輸入數(shù)據(jù)實現(xiàn)用戶與服務(wù)器(或本地終端)的交互。所述輸入輸出單元115可以是,但不限于,鼠標和鍵盤等。
音頻單元116向用戶提供音頻接口,其可包括一個或多個麥克風、一個或者多個揚聲器以及音頻電路。
顯示單元117在所述服務(wù)器(或本地終端)與用戶之間提供一個交互界面(例如用戶操作界面)或用于顯示圖像數(shù)據(jù)給用戶參考。在本實施例中,所述顯示單元117可以是液晶顯示器或觸控顯示器。若為觸控顯示器,其可為支持單點和多點觸控操作的電容式觸控屏或電阻式觸控屏等。支持單點和多點觸控操作是指觸控顯示器能感應(yīng)到來自該觸控顯示器上一個或多個位置處同時產(chǎn)生的觸控操作,并將該感應(yīng)到的觸控操作交由處理器進行計算和處理。
可以理解,圖1所示的結(jié)構(gòu)僅為示意,電子設(shè)備100還可包括比圖1中所示更多或者更少的組件,或者具有與圖1所示不同的配置。圖1中所示的各組件可以采用硬件、軟件或其組合實現(xiàn)。
于本發(fā)明實施例中,所述電子設(shè)備100可以作為用戶終端,也可以作為服務(wù)器。所述用戶終端可以為:pc(personalcomputer)電腦、平板電腦、手機、電子閱讀器、筆記本電腦、智能電視、機頂盒、車載終端等終端設(shè)備。電子設(shè)備100中安裝有客戶端,該客戶端可以是瀏覽器也可以是第三方應(yīng)用軟件,與服務(wù)器(server)端相對應(yīng)。例如,用戶可以通過瀏覽器瀏覽網(wǎng)頁。
第一實施例
請參閱圖2,本發(fā)明實施例提供了一種網(wǎng)頁分割方法,所述方法包括:步驟s200、步驟s210、步驟s220、步驟s230、步驟s240和步驟s250。
步驟s200:對獲取到的待分割網(wǎng)頁對應(yīng)的第一html文檔進行規(guī)范化處理,獲得規(guī)范化后的第二html文檔。
本實施例中,可以無需使整個html文檔符合w3c標準,對所述html文檔進行規(guī)范化處理可以包括:若有一個html標簽橫跨多行,則將其規(guī)范化為一行內(nèi)容;規(guī)范化<h>標簽對之間的內(nèi)容,使其之間的html信息的組織符合w3c的標準;去除<script>標簽及中間的javascript代碼,并保留空白位置信息。以此獲得規(guī)范化后的第二html文檔。
步驟s210:基于所述第二html文檔以及預(yù)設(shè)的行深度計算規(guī)則,獲取所述第二html文檔對應(yīng)的以行號為索引的行深度表。
基于步驟s210,進一步地,根據(jù)所述預(yù)設(shè)的行深度計算規(guī)則,從文件頭開始按行依次遍歷所述第二html文檔,獲得所述第二html文檔對應(yīng)的以行號為索引的行深度表。
具體地,所述預(yù)設(shè)的行深度計算規(guī)則為:起始深度為0,遇到一個成對的html標簽中的前標簽,深度加1;遇到一個成對的html標簽中的后標簽,深度減1;遇到單個html標簽中的‘<’,深度加1,遇到單個html標簽中的“/>”,深度減1。按照此規(guī)則,從文件頭開始按行依次遍歷所述第二html文檔,獲得所述第二html文檔對應(yīng)的以行號為索引的行深度表。
步驟s220:獲取所述第二html文檔中標題內(nèi)容,建立以行號為索引的標題表。
步驟s220,進一步地,獲取所述第二html文檔中<h>標簽對之間的標題內(nèi)容,建立以行號為索引的標題表。
步驟s230:基于去除所述第二html文檔中所有標簽后的文本信息及預(yù)設(shè)的行塊定義規(guī)則,獲得所述文本信息對應(yīng)的多個行塊,再計算所述多個行塊各自對應(yīng)的行塊長度,以建立行塊分布函數(shù)。
基于步驟s230,進一步地,以去除所述第二html文檔中所有標簽后的文本信息中的行號為軸,取其下方n行,定義為一個行塊;
計算去掉所述行塊中的所有空白符后的字符總數(shù),將計算結(jié)果作為該行塊的行塊長度;
重復(fù)以上步驟,獲得所述文本信息對應(yīng)的多個行塊和所述多個行塊各自對應(yīng)的行塊長度;
以所述文本信息中的行號為自變量,所述多個行塊各自對應(yīng)的行塊長度為因變量,建立行塊分布函數(shù)。
具體地,去除所述第二html文檔中所有標簽,留下標簽內(nèi)的文本信息,保留去除標簽后的空白位置,即不改變文本所在的行號,留下的位置稱為ctext(不管是否為空白);以ctext為軸,取標簽所在行的下面n行(n<5,本實施例中取n=3,n稱為行塊厚度),合起來定義為一個行塊cblock。行塊i是以ctext中行號i為軸的行塊,則一個cblock,計算去掉其中的所有空白符(\n,\r,\t等)后的字符總數(shù),將計算結(jié)果作為該行塊的行塊長度。重復(fù)以上步驟,獲得所述文本信息對應(yīng)的多個行塊和所述多個行塊各自對應(yīng)的行塊長度。linenum(cblock)表示cblock的行號,以cblock每行為軸,共有l(wèi)inenum(clock)-n個cblock。然后依照每個cblock的行號為x軸,其各自對應(yīng)的行塊長度為y軸,建立[1,linenum(cblock)-n]上的行塊分布函數(shù)。處理上述過程共需要的事件復(fù)雜度為o(n);需要三個二維關(guān)系表存儲所需遍歷過程中記錄的數(shù)據(jù)。
引入塊的概念:若一個行塊的行塊長度不為0且其前一個行塊的行塊長度為0,那么從該行塊開始到下一個行塊長度為0的行塊的前一個行塊之間所有的行塊稱為一個塊。遍歷行塊分布函數(shù)可以得到記錄塊的數(shù)據(jù)表。
在觀察了大量的html文檔后,發(fā)現(xiàn)文檔的行塊分布函數(shù)呈現(xiàn)出一定的規(guī)律,即視覺上成為一塊的網(wǎng)頁內(nèi)容的行塊分布規(guī)律,即內(nèi)容塊(cb)是總由一個標題塊(tb)和若干個正文塊(bb)組合起來的。
cb=tb+n*bb(n≥0)
同時,html文檔的內(nèi)容是線性組織的。一般來說,開發(fā)中總是會將在視覺或語義上相鄰的網(wǎng)頁信息寫在相鄰的代碼段落中,所以,可以先驗地認為,大多數(shù)的網(wǎng)頁的行塊分布和網(wǎng)頁內(nèi)容之間總是呈現(xiàn)如圖3所示的關(guān)系,即網(wǎng)頁上視覺和內(nèi)容的分塊映射到行塊分布函數(shù)中,是以標題塊(titleblock,tb)作為分隔符的。要對一個網(wǎng)頁的內(nèi)容進行分割,就需要找出網(wǎng)頁中所有的標題塊,之后以標題塊為分割點直接對整個html文檔進行分塊,實現(xiàn)網(wǎng)頁的分割。
步驟s240:基于所述行塊分布函數(shù)及所述以行號為索引的標題表,獲取多個標題塊。
基于步驟s240,進一步地,通過所述行塊分布函數(shù),查找所述第一html文檔中所有的塊集合中對應(yīng)行塊長度n符合[n1,n2,…nk](n1=n2)且n1≤c的塊,加入可能的標題塊集合p;查找到所述第一html文檔中所有由<h>標簽映射的且n1≤c的塊,加入標題集合h。遍歷集合p中的所有塊,統(tǒng)計所有b∈p的塊b中的n1并將其加入長度集合lp,遍歷集合l,查找到其中重復(fù)出現(xiàn)的最多的行塊長度kp。遍歷集合h中的所有塊b,統(tǒng)計所有b∈h的塊b中的n1并將其加入長度集合lh。遍歷集合lh,計算lh中所有元素的平均值kh。若h非空,則有標題塊k=c1×kp+c2×kh,c1和c2為兩個權(quán)重系數(shù),c1≤c2且c1+c2=1,c1∈[0.3,0.4]。若h為空,則k=kp。設(shè)置一個容差值δ,c1=max(k-δ,0),c2=min(k+δ,c),δ∈[1,3],c為預(yù)設(shè)正數(shù)。在計算得到了c1,c2之后,遍歷集合p,若b∈p且b中的n1滿足c1≤n1≤c2,則將b加入結(jié)合h。
因為文檔中還存在非<h>標簽的標題塊,一般而言標題的第一個行塊長度滿足一定的條件,該條件依照以后的<h>標題表而定。
所述多個標題塊可以包括基于步驟s240獲得的<h>標簽標題塊,還可以包括第一行塊,所述第一行塊屬于所述多個行塊且滿足預(yù)設(shè)條件。
部分標題塊滿足n1=n2但是由于正文信息字數(shù)過多沒有被加入b中,初次判斷完標題塊之后,在此遍歷行塊分布函數(shù),第一行塊滿足的所述預(yù)設(shè)條件為:以第一行塊為中心,上下三個塊之內(nèi)有標題塊;且該第一行塊對應(yīng)的html正文信息字數(shù)小于等于m,m為一常數(shù),一般取值在10-15之間,則該第一行塊塊也為一個標題塊,并將其加入集合h。
步驟s250:基于所述多個標題塊、所述以行號為索引的行深度表及預(yù)設(shè)的合并塊規(guī)則,對所述第一html文檔進行合并塊處理,以實現(xiàn)對所述獲取到的待分割網(wǎng)頁進行分割,重新組織成為新的網(wǎng)頁。
基于步驟s250,進一步地,在得到了所有的標題塊之后,就可以進行塊的合并了。合并過程是遍歷塊的過程,以塊在文檔中的先后位置為順序,從上往下,分兩步進行。所述預(yù)設(shè)的合并塊規(guī)則包括第一合并規(guī)則和第二合并規(guī)則。
第一步以標題塊(tb)為分割界限,進行標題塊和正文塊(bb)的合并,合并成為一個內(nèi)容塊(cb)。第一合并規(guī)則如下:
從塊分布的起始開始向下遍歷,若整個第一html文檔中的第一個塊不是tb,則從第一個塊開始向下合并,直到遇到第一個tb為止。該tb之前的所有bb合并為一個cb。
若b1為tb,則順序向下遍歷,直到發(fā)現(xiàn)下一個塊b2,b2滿足b2的塊深度小于其上一塊(正文塊或標題塊)且b2是標題塊,將b1開始(包括b1)到b2的前一個塊之間的所有塊合并為一個cb。然后從b2開始,繼續(xù)向下遍歷,直到結(jié)束。
第二步進行連續(xù)標題塊的合并。第二合并規(guī)則如下:
重新遍歷整個第一html文檔的塊。當發(fā)現(xiàn)塊b1滿足b1是一個標題塊,則順序向下遍歷,直到發(fā)現(xiàn)第一個內(nèi)容塊b2為止,將b1開始(包括b2)到b2的前一個塊之間的所有塊合并為一個cb。然后從b2開始,繼續(xù)向下遍歷,直到結(jié)束。綜上,以實現(xiàn)對所述獲取到的待分割網(wǎng)頁進行分割,重新組織成為新的網(wǎng)頁。
為了更進一步地說明本發(fā)明實施例提供的網(wǎng)頁分割方法的有益效果,本實施例中以獲取到的40張網(wǎng)頁進行測試,網(wǎng)頁主要分為四類,學(xué)校主頁、博客日志、資源網(wǎng)站和政府網(wǎng)站。每類有10張網(wǎng)頁進行測試,測試結(jié)果如圖4所示,效果顯著。
本發(fā)明實施例提供的一種網(wǎng)頁分割方法,所述方法包括對獲取到的待分割網(wǎng)頁對應(yīng)的第一html文檔進行規(guī)范化處理,獲得規(guī)范化后的第二html文檔;基于所述第二html文檔以及預(yù)設(shè)的行深度計算規(guī)則,獲取所述第二html文檔對應(yīng)的以行號為索引的行深度表;獲取所述第二html文檔中標題內(nèi)容,建立以行號為索引的標題表;基于去除所述第二html文檔中所有標簽后的文本信息及預(yù)設(shè)的行塊定義規(guī)則,獲得所述文本信息對應(yīng)的多個行塊,再計算所述多個行塊各自對應(yīng)的行塊長度,以建立行塊分布函數(shù);基于所述行塊分布函數(shù)及所述以行號為索引的標題表,獲取多個標題塊;基于所述多個標題塊、所述以行號為索引的行深度表及預(yù)設(shè)的合并塊規(guī)則,對所述第一html文檔進行合并塊處理,以實現(xiàn)對所述獲取到的待分割網(wǎng)頁進行分割,重新組織成為新的網(wǎng)頁。無需建立dom樹,可以一次遍歷待分割網(wǎng)頁對應(yīng)的html文檔,獲取相應(yīng)的行塊信息,如行塊分布函數(shù)、行塊長度、標題表等,無需對html文檔進行遍歷操作,再通過對行塊信息進行遍歷分析處理,獲得整個html文檔的標題塊和內(nèi)容塊區(qū)域信息,以標題塊為分割點對整個html文檔進行快速分割,能在極少的計算資源的情況下實現(xiàn)快速的網(wǎng)頁分割,減少時間復(fù)雜度和空間復(fù)雜度。
第二實施例
請參閱圖5,本發(fā)明實施例提供了一種網(wǎng)頁分割裝置300,所述裝置300包括規(guī)范化處理單元310、行深度表獲得單元320、標題表建立單元330、行塊分布函數(shù)建立單元340、標題塊獲得單元350和合并單元360。
規(guī)范化處理單元310,用于對獲取到的待分割網(wǎng)頁對應(yīng)的第一html文檔進行規(guī)范化處理,獲得規(guī)范化后的第二html文檔。
行深度表獲得單元320,用于基于所述第二html文檔以及預(yù)設(shè)的行深度計算規(guī)則,獲取所述第二html文檔對應(yīng)的以行號為索引的行深度表。
作為一種實施方式,行深度表獲得單元320可以包括行深度表獲得子單元321。
行深度表獲得子單元321,用于根據(jù)所述預(yù)設(shè)的行深度計算規(guī)則,從文件頭開始按行依次遍歷所述第二html文檔,獲得所述第二html文檔對應(yīng)的以行號為索引的行深度表。
標題表建立單元330,用于獲取所述第二html文檔中標題內(nèi)容,建立以行號為索引的標題表。
作為一種實施方式,標題表建立單元330可以包括標題表建立子單元331。
標題表建立子單元331,用于獲取所述第二html文檔中<h>標簽對之間的標題內(nèi)容,建立以行號為索引的標題表。
行塊分布函數(shù)建立單元340,用于基于去除所述第二html文檔中所有標簽后的文本信息及預(yù)設(shè)的行塊定義規(guī)則,獲得所述文本信息對應(yīng)的多個行塊,再計算所述多個行塊各自對應(yīng)的行塊長度,以建立行塊分布函數(shù)。
作為一種實施方式,行塊分布函數(shù)建立單元340可以包括定義子單元341、計算子單元342、長度獲得子單元343、建立子單元344。
定義子單元341,用于以去除所述第二html文檔中所有標簽后的文本信息中的行號為軸,取其下方n行,定義為一個行塊。
計算子單元342,用于計算去掉所述行塊中的所有空白符后的字符總數(shù),將計算結(jié)果作為該行塊的行塊長度。
長度獲得子單元343,用于重復(fù)以上步驟,獲得所述文本信息對應(yīng)的多個行塊和所述多個行塊各自對應(yīng)的行塊長度。
建立子單元344,用于以所述文本信息中的行號為自變量,所述多個行塊各自對應(yīng)的行塊長度為因變量,建立行塊分布函數(shù)。
標題塊獲得單元350,用于基于所述行塊分布函數(shù)及所述以行號為索引的標題表,獲取多個標題塊。
合并單元360,用于基于所述多個標題塊、所述以行號為索引的行深度表及預(yù)設(shè)的合并塊規(guī)則,對所述第一html文檔進行合并塊處理,以實現(xiàn)對所述獲取到的待分割網(wǎng)頁進行分割,重新組織成為新的網(wǎng)頁。
以上各單元可以是由軟件代碼實現(xiàn),此時,上述的各單元可存儲于存儲器110內(nèi)。以上各單元同樣可以由硬件例如集成電路芯片實現(xiàn)。
本發(fā)明實施例提供的網(wǎng)頁分割裝置300,其實現(xiàn)原理及產(chǎn)生的技術(shù)效果和前述方法實施例相同,為簡要描述,裝置實施例部分未提及之處,可參考前述方法實施例中相應(yīng)內(nèi)容。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的裝置和方法,也可以通過其它的方式實現(xiàn)。以上所描述的裝置實施例僅僅是示意性的,例如,附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的裝置、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當注意,在有些作為替換的實現(xiàn)方式中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
另外,在本發(fā)明各個實施例中的各功能模塊可以集成在一起形成一個獨立的部分,也可以是各個模塊單獨存在,也可以兩個或兩個以上模塊集成形成一個獨立的部分。
所述功能如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。應(yīng)注意到:相似的標號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨后的附圖中不需要對其進行進一步定義和解釋。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)所述以權(quán)利要求的保護范圍為準。
需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。