專利名稱:從網頁中抽取數據的方法和裝置的制作方法
技術領域:
本發(fā)明涉及數據業(yè)務技術,特別涉及從網頁中抽取數據的方法和裝置。
背景技術:
在數據業(yè)務技術中,目前的網頁信息抽取方式都是通過編寫正則表達式實現的, 具體為針對每個網站,甚至網站內的每個版塊,都需要編寫對應的正則表達式。這種方式主要針對信息量相對較小的某個網站或網站內部的某個版塊,比較適合少數網站短期的研究行為。但是,網站采用的技術或者布局日新月異,這樣隨著技術或布局的變化,就需要重新編寫相應的正則表達式,這會導致無法對全網海量的數據進行實時處理,并且,正則表達式都是由人工執(zhí)行的,這種隨著技術或布局的變化就需要重新編寫相應的正則表達式的方式,需要太多人力資源。
發(fā)明內容
本發(fā)明提供了從網頁中抽取數據的方法,以避免通過編寫正則表達式的方式抽取數據,節(jié)省人力資源。本發(fā)明提供的技術方案包括一種從網頁中抽取數據的方法,該方法包括步驟A,定義網頁中節(jié)點的劃分規(guī)則,根據節(jié)點劃分規(guī)則和對訓練樣本網頁的解析,獲取用于抽取網頁中數據的約束規(guī)則集合;步驟B,利用所述約束規(guī)則集合從待抽取的網頁中抽取數據。一種從網頁中抽取數據的裝置,包括處理單元,用于定義網頁中節(jié)點的劃分規(guī)則,根據節(jié)點劃分規(guī)則和對訓練樣本網頁的解析,獲取用于抽取網頁中數據的約束規(guī)則集合;抽取單元,用于利用所述約束規(guī)則集合從待抽取的網頁中抽取數據。由以上技術方案可以看出,本發(fā)明中,通過定義網頁中節(jié)點的劃分規(guī)則,根據節(jié)點劃分規(guī)則和對訓練樣本網頁的解析,獲取用于抽取網頁中數據的約束規(guī)則集合;以及利用所述約束規(guī)則集合從待抽取的網頁中抽取數據,實現了根據節(jié)點自身屬性及確定的規(guī)則約束來完成數據抽取,避免了根據網站網頁結構量身定做模板或者編寫正則表達式的方式, 同時也消除了網站改版或技術更換帶來的模板重新定義或正則表達式重新編寫等因素的影響;進一步地,本發(fā)明中,一旦規(guī)則約束確立,就可以對展現“同類節(jié)點但不同網站或不同結構的網頁”準確實時進行數據抽取,極大的提高了方法的適用范圍及時效性,很大程度上減少了人工干預,同時極大的改善了搜索引擎信息檢索的質量及信息更新的及時性問題,使搜索引擎不必再受制于前端頁面展現技術或版式多變的困擾。
圖1為本發(fā)明實施例提供的基本流程圖;圖2為本發(fā)明實施例提供的步驟102的流程圖;圖3為本發(fā)明實施例提供的步驟204的具體流程圖;圖4為本發(fā)明實施例提供的確定步驟205中節(jié)點的約束集合的流程圖;圖5為本發(fā)明實施例提供的步驟209的流程圖;圖6為本發(fā)明實施例提供的確定維度在節(jié)點屬性值上的極值約束條件集合的流程圖;圖7為本發(fā)明實施例提供的步驟103的具體流程圖;圖8為本發(fā)明實施例提供的步驟701的流程圖;圖9為本發(fā)明實施例提供的步驟702的具體流程圖;圖10為本發(fā)明實施例提供的步驟703的流程圖;圖11為本發(fā)明實施例提供的等價關系劃分約束流程圖;圖12為本發(fā)明實施例提供的劃分關系的排序約束的流程圖;圖13為本發(fā)明實施例提供的維度之間關聯(lián)約束的流程圖;圖14為本發(fā)明實施例提供的步驟705的流程圖;圖15為本發(fā)明實施例提供的裝置結構圖。
具體實施例方式本發(fā)明提供的方法可對網頁中的數據進行抽取,其主要是利用網頁中節(jié)點自身或節(jié)點之間的屬性定義相應的節(jié)點劃分規(guī)則,再根據提供的普通訓練樣本網頁集和指定抽取維度集合確定該指定抽取維度集合中各個維度在該普通訓練樣本網頁集中出現的路徑 (Xpath),采用基于粗糙集等價劃分和維度間約束分析方法,計算得出各個維度對應的基于粗糙集的等價約束條件集合及維度在節(jié)點屬性值上的約束條件集合等,該計算得出的約束條件集合可以通過反向驗證方式來驗證其有效性及通用性,最后將這些約束條件集合應用到網頁的數據抽取中。其中,在后期的數據抽取中也可以不斷的完善上述約束集合,也就是說,本發(fā)明提供的方法實質上是一個開放式的自動不斷完善的過程。為了使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面結合附圖和具體實施例對本發(fā)明進行詳細描述。參見圖1,圖1為本發(fā)明實施例提供的基本流程圖。如圖1所示,該流程可包括以下步驟步驟101,定義網頁中節(jié)點的劃分規(guī)則。本步驟101中,網頁中節(jié)點實質上為將網頁解析成DOM樹,然后將DOM樹轉化成各個節(jié)點,組成節(jié)點集合。至于步驟101中的劃分規(guī)則,其可以根據網頁中各個節(jié)點自身包含的信息以及位置等因素來定義,也可以根據實際情況來定義,本發(fā)明實施例并不具體限定。優(yōu)選地,作為本發(fā)明的一個實施例,該節(jié)點分類規(guī)則可包括以下幾種的至少一個1)節(jié)點位置特征,即節(jié)點在DOM樹中的位置;
2)節(jié)點的文本類型,即節(jié)點的類型是文本、注釋,或樣式等;3)節(jié)點的 HTML 標記 Tag ;4)節(jié)點內容;5)節(jié)點內容的字符長度;6)節(jié)點中包含的子節(jié)點中含有內容的子節(jié)點個數;7)節(jié)點所在HTML標記中的區(qū)域;8)節(jié)點兄弟節(jié)點的個數;9)節(jié)點文字的正則表達式;10)其他,可以根據不同的需求定義的節(jié)點劃分規(guī)則。步驟102,根據節(jié)點劃分規(guī)則和對訓練樣本網頁的解析,獲取用于抽取網頁中數據的約束規(guī)則集合。本步驟102中訓練樣本網頁的個數為一個以上,可統(tǒng)一存在一個集合比如訓練樣本集(以下以訓練樣本集為例進行描述)中,其主要是根據實際情況確定的,不需要特殊處理,可為普通網頁。至于步驟102中的獲取操作如何實現,具體在下文圖2進行描述。步驟103,利用所述約束規(guī)則集合從待抽取的網頁中抽取數據。至此,通過以上步驟實現了本發(fā)明實施例提供的數據抽取方法。參見圖2,圖2為本發(fā)明實施例提供的步驟102的流程圖。本實施例中,步驟102 主要是根據節(jié)點劃分規(guī)則對訓練樣本網頁進行分析,識別出指定維度所在節(jié)點滿足哪些約束規(guī)則,然后再將這些約束規(guī)則應用在其他樣本網頁,如果能夠正確且唯一識別出所有樣本網頁在該設定維度的信息,則將該約束規(guī)則保留,形成約束規(guī)則集合,如果不能識別出, 則額外增加節(jié)點分類規(guī)則,重復上述過程,最終得到有效的約束規(guī)則集合。下面對該步驟 102進行詳細描述。如圖2所示,該流程可包括以下步驟步驟201,指定從訓練樣本網頁中抽取的維度I (Dl,D2,D3. . . Dm)(記為維度集合 I),以及指定該維度集合I對應的節(jié)點存放集合UI。步驟201中,指定維度集合I中的維度是從樣本訓練網頁中需要抽取的結果對象, 比如標題title、內容content、發(fā)表時間time等。其可與集合UI中的節(jié)點具有一一對應關系,也可具有一對多關系,其中,維度對應的集合UI中的節(jié)點,實質上是該維度在訓練樣本網頁中的位置,即路徑Xpath,比如標題在某個訓練樣本網頁中的Xpath,這里,獲取這些信息的Xpath方式有很多,利用firefox瀏覽器插件是其中一種很簡單的方式。步驟202,遍歷訓練樣本集中的訓練樣本網頁,將該遍歷到的訓練樣本網頁作為當前樣本。步驟203,將當前樣本解析成DOM樹,然后將DOM樹轉化成節(jié)點集合U。本步驟203中,集合U可與集合UI相同,也可不同,比如,集合U為集合UI中的子集,或者集合U與集合UI具有部分相同的節(jié)點等。步驟204,根據不同的節(jié)點劃分規(guī)則將集合U劃分成不同的劃分集合。也就是說,步驟101定義多少個節(jié)點劃分規(guī)則,本步驟204就可得到多少個劃分集合,具體可參見圖3所示的流程。
參見圖3,圖3為本發(fā)明實施例提供的步驟204的具體流程圖。如圖3所示,該流程可包括以下步驟步驟301,遍歷步驟101定義的節(jié)點劃分規(guī)則,將遍歷到的節(jié)點劃分規(guī)則作為當前劃分規(guī)則;步驟302,遍歷集合U,將遍歷到的節(jié)點作為當前節(jié)點;步驟303,判斷當前節(jié)點是否滿足當前劃分規(guī)則,如果是,執(zhí)行步驟304 ;如果否, 執(zhí)行步驟305 ;步驟304,將當前節(jié)點添加到該當前劃分規(guī)則對應的劃分集合中,之后執(zhí)行步驟 305。步驟305,判斷集合U中是否還存在未被遍歷的節(jié)點,如果是,將該未被遍歷的其中一個節(jié)點作為當前節(jié)點,返回執(zhí)行步驟303 ;如果否,執(zhí)行步驟306 ;步驟306,判斷定義的節(jié)點劃分規(guī)則中是否還存在未被遍歷的節(jié)點劃分規(guī)則,如果是,將未被遍歷的其中一個節(jié)點劃分規(guī)則作為當前劃分規(guī)則,返回執(zhí)行步驟302,否則,結束當前流程。至此,通過上述步驟306實現了步驟204中的流程。步驟205,根據劃分集合,確定集合UI中每個節(jié)點的約束集合,將集合UI中所有節(jié)點的所有約束集合作為該訓練樣本網頁對應的第一約束條件集合。本步驟205實質上是分別確定集合UI中每個節(jié)點出現在步驟204得到的哪些劃分集合中,得到該節(jié)點的約束集合,將集合UI中所有節(jié)點的約束集合組合在一起,得到第一約束條件集合。參見圖4,圖4為本發(fā)明實施例提供的確定步驟205中節(jié)點的約束集合的流程圖。 如圖4所示,該流程可包括以下步驟步驟401,遍歷集合UI,將遍歷到的節(jié)點作為當前節(jié)點;步驟402,判斷步驟204得到的劃分集合中是否存在包含該當前節(jié)點的劃分集合, 如果是,執(zhí)行步驟403,否則,執(zhí)行步驟404 ;步驟403,將當前節(jié)點上對應該存在的劃分集合的節(jié)點屬性值和該當前節(jié)點存放在當前節(jié)點的約束集合中。之后執(zhí)行步驟404。由于劃分集合與節(jié)點劃分規(guī)則對應,因此,該當前節(jié)點的節(jié)點屬性值與該存在的劃分集合所對應的節(jié)點劃分規(guī)則對應。步驟404,判斷集合UI中是否還存在未被遍歷的節(jié)點,如果是,將未被遍歷的其中一個節(jié)點作為當前節(jié)點,返回步驟402,否則,結束當前流程。至此,通過上述步驟可以確定集合UI中各個節(jié)點的約束集合。步驟206,針對集合UI中任意兩個節(jié)點,計算該兩個節(jié)點對應的兩個維度在至少一個屬性上的二元關系,將計算結果記錄在該訓練樣本網頁對應的第二約束條件集合(也稱為維度間約束集合)。其中,根據節(jié)點屬性值類型,及節(jié)點之間的關聯(lián),本發(fā)明實施例中的二元關系主要包括以下至少一種(1)等價關系指每個節(jié)點屬性值都具有的二元關系,用于判斷兩個節(jié)點在同一屬性上是否相等,比如兩個節(jié)點是否都是文本節(jié)點,是否有孩子節(jié)點等;
(2)比較關系其是可選的二元關系,用于比較兩個節(jié)點在同一屬性上的取值,其得到的比較結果集分為大于、小于、等于三種;(3)距離關系數值型屬性都具有,結果為兩個節(jié)點在此數值型屬性上的數值差的絕對值;(4)其他,根據屬性的值,可以增加更多的自定義的關系。以集合UI中任意兩個節(jié)點對應的兩個維度為題目Tp和日期Dp,選取的屬性為位置屬性為例,由于在位置屬性上有比較關系,以及距離關系,因此,可計算題目和日期在位置屬性上這兩種關系的至少一個,以計算這兩種關系為例,假設這兩個計算結果為比較關系τρ > Dp,距離關系|Tp-Dp| < 5,如此,將則將該計算結果記錄到當前樣本對應的維度間約束集合中。步驟207,判斷訓練樣本集是否還存在未被遍歷的訓練樣本網頁,如果是,執(zhí)行步驟208 ;否則,執(zhí)行步驟209。步驟208,將該未被遍歷的其中一個訓練樣本網頁作為當前樣本,返回執(zhí)行步驟 203。步驟209,根據步驟205計算的第一約束條件集合確定基于粗糙集的等價約束條件集合。參見圖5,圖5為本發(fā)明實施例提供的步驟209的流程圖。如圖5所示,該流程可包括以下步驟步驟501,遍歷第一約束條件集合中各個節(jié)點的約束集合,將遍歷到的節(jié)點約束集合作為當前約束集合。步驟502,判斷當前約束集合對應的節(jié)點劃分規(guī)則是離散型還是連續(xù)型,并根據確定結果計算當前約束集合中各個節(jié)點分布的概率。由于在步驟205中,節(jié)點的約束集合對應劃分集合,而劃分集合是依賴于節(jié)點劃分規(guī)則劃分的,即劃分集合對應節(jié)點劃分規(guī)則,因此,本步驟502根據當前約束集合很容易確定出該當前約束集合對應的節(jié)點劃分規(guī)則。本實施例中,如果對應的節(jié)點劃分規(guī)則是離散型,則步驟502中的計算可按照公式一執(zhí)行
權利要求
1.一種從網頁中抽取數據的方法,其特征在于,該方法包括步驟A,定義網頁中節(jié)點的劃分規(guī)則,根據節(jié)點劃分規(guī)則和對訓練樣本網頁的解析,獲取用于抽取網頁中數據的約束規(guī)則集合;步驟B,利用所述約束規(guī)則集合從待抽取的網頁中抽取數據。
2.根據權利要求1所述的方法,其特征在于,所述步驟A中的獲取包括步驟Al,根據節(jié)點劃分規(guī)則,生成每一訓練樣本網頁對應的第一約束條件集合和第二約束條件集合;步驟A2,依據第一約束條件集合和第二約束條件集合分別生成對應的約束規(guī)則集合。
3.根據權利要求2所述的方法,其特征在于,所述步驟Al包括步驟All,針對每一訓練樣本網頁,將該訓練樣本網頁解析成DOM樹,并將該DOM樹轉換成節(jié)點集合U;步驟A12,按照定義的不同節(jié)點劃分規(guī)則,將節(jié)點集合U劃分成不同的劃分集合; 步驟A13,根據所述劃分集合,確定指定抽取維度集合對應的節(jié)點存放集合Ul中每個節(jié)點的約束集合,將節(jié)點存放集合UI中所有節(jié)點的所有約束集合作為該訓練樣本網頁對應的第一約束條件集合;步驟A14,針對節(jié)點存放集合UI中任意兩個節(jié)點,計算該兩個節(jié)點對應的兩個維度在至少一個屬性上的二元關系,將計算結果記錄在該訓練樣本網頁對應的第二約束條件集
4.根據權利要求3所述的方法,其特征在于,所述步驟A12包括步驟A121,遍歷定義的節(jié)點劃分規(guī)則,將遍歷到的節(jié)點劃分規(guī)則作為當前劃分規(guī)則; 步驟A122,遍歷節(jié)點集合U,將遍歷到的節(jié)點作為當前節(jié)點;步驟A123,判斷該當前節(jié)點是否滿足當前劃分規(guī)則,如果是,則將當前節(jié)點添加到該當前劃分規(guī)則對應的劃分集合中,執(zhí)行步驟A124,如果否,執(zhí)行步驟AlM ;步驟A124,判斷所述節(jié)點集合U中是否還存在未被遍歷的節(jié)點,如果是,將該未被遍歷的其中一個節(jié)點作為當前節(jié)點,返回執(zhí)行步驟A123 ;如果否,執(zhí)行步驟A125 ;步驟A125,判斷定義的節(jié)點劃分規(guī)則中是否還存在未被遍歷的節(jié)點劃分規(guī)則,如果是, 將未被遍歷的其中一個節(jié)點劃分規(guī)則作為當前劃分規(guī)則,返回執(zhí)行步驟A122,否則,結束當前流程。
5.根據權利要求3所述的方法,其特征在于,所述步驟A13包括 步驟A131,遍歷節(jié)點存放集合UI,將遍歷到的節(jié)點作為當前節(jié)點;步驟A132,判斷步驟A12得到的劃分集合中是否存在包含該當前節(jié)點的劃分集合,如果是,將當前節(jié)點上對應該存在的劃分集合的節(jié)點屬性值和該當前節(jié)點存放在當前節(jié)點的約束集合中,之后執(zhí)行步驟A133 ;如果否,執(zhí)行步驟A133 ;步驟A133,判斷節(jié)點存放集合Ul中是否還存在未被遍歷的節(jié)點,如果是,將未被遍歷的其中一個節(jié)點作為當前節(jié)點,返回步驟A132,否則,結束當前流程。
6.根據權利要求2所述的方法,其特征在于,所述步驟A2中的約束規(guī)則集合包括基于粗糙集的等價約束條件集合和維度在節(jié)點屬性值上的約束條件集合。
7.根據權利要求6所述的方法,其特征在于,所述基于粗糙集的等價約束條件集合依據第一約束條件集合生成,具體包括步驟A21,遍歷第一約束條件集合中各個節(jié)點的約束集合,將遍歷到的節(jié)點約束集合作為當前約束集合;步驟A22,判斷當前約束集合對應的節(jié)點劃分規(guī)則是離散型還是連續(xù)型,并根據確定結果計算當前約束集合中各個節(jié)點分布的概率;步驟A23,從當前約束集合中去除具有概率不同于指定目標節(jié)點的概率的節(jié)點;步驟A24,判斷第一約束條件集合中的節(jié)點約束集合是否已被全部遍歷,如果是,執(zhí)行步驟A25,否則,將未被遍歷的其中一個節(jié)點約束集合確定為當前約束集合,返回執(zhí)行步驟 A22 ;步驟A25,將通過步驟A23得到的所有集合確定為基于粗糙集的等價約束條件集合。
8.根據權利要求6所述的方法,其特征在于,所述維度在節(jié)點屬性值上的約束條件集合依據第二約束條件集合生成,具體包括合并不同訓練樣本網頁對應的第二約束條件集合;確定合并后得到的集合為維度在節(jié)點屬性值上的約束條件集合。
9.根據權利要求8所述的方法,其特征在于,所述第二約束條件集合中的二元關系至少包括比較關系和距離關系;將不同訓練樣本網頁對應的第二約束條件集合合并至少包括合并比較關系和合并距離關系;其中,合并比較關系包括在一個訓練樣本網頁對應的第二約束條件集合中存在兩個節(jié)點之間的比較關系,判斷該比較關系是否存在其他訓練樣本網頁對應的第二約束條件集合中,如果是,該比較關系保留;如果不是,刪除掉該比較關系;合并距離關系包括在一個訓練樣本網頁對應的第二約束條件集合中兩個維度之間的距離關系為第一值,如果在其他訓練樣本網頁對應的第二約束條件集合中該兩個維度之間的距離關系為第二值,則該兩個維度之間的距離關系在合并后為第一值至第二值之間的數值。
10.根據權利要求6所述的方法,其特征在于,所述步驟A2進一步包括驗證所述基于粗糙集的等價約束條件集合和維度在節(jié)點屬性值上的約束條件集合是否識別出所述指定維度集合中的各個維度,如果是,則執(zhí)行步驟B ;否則,執(zhí)行步驟A3 ;步驟A3,確定維度在節(jié)點屬性值上的極值約束條件集合。
11.根據權利要求10所述的方法,其特征在于,所述驗證基于粗糙集的等價約束條件集合和維度在節(jié)點屬性值上的約束條件集合是否識別出指定維度集合中的各個維度包括針對每一訓練樣本網頁中任意兩個維度Dl和D2,執(zhí)行以下處理如果維度Dl對應的節(jié)點集合為Um (Nxl,· · · NJ,維度Dl對應的節(jié)點集合為Udid2 {(NxlNyl) · · · Nyn),維度Dl和D2 上的二元關系集合為UR(R1,. . . to),則將維度Dl和維度D2對應的節(jié)點集組合,得到以下節(jié)點對UD1D2{(Nxi,Nyi) I i e {1,m},j e {1,η}};遍歷所述節(jié)點對,確定滿足所述二元關系集合中所有二元關系的節(jié)點對,得到集合Udl {(Nx, Ny)...};在對所述訓練樣本網頁中每兩個維度都完成所述處理后,判斷最終得到滿足二元關系集合中所有二元關系的節(jié)點對組成的集合是否僅有1個,如果是,確定所述基于粗糙集的等價約束條件集合和維度在節(jié)點屬性值上的約束條件集合識別出所述指定維度集合中的各個維度;否則,確定所述基于粗糙集的等價約束條件集合和維度在節(jié)點屬性值上的約束條件集合識別不出所述指定維度集合中的各個維度。
12.根據權利要求10所述的方法,其特征在于,所述步驟A3包括步驟A31,遍歷所述指定維度集合中的維度,將遍歷到的維度作為當前維度,如果當前維度對應的節(jié)點集Un中包含的節(jié)點數量大于1,所述節(jié)點集Un中的節(jié)點屬于同一訓練樣本網頁,則遍歷指定目標節(jié)點與當前維度對應的所有節(jié)點具有的各個屬性,將遍歷到的屬性作為當前屬性;步驟A32,將指定目標節(jié)點分別與當前維度對應的所有節(jié)點在當前屬性上進行比較,得到比較結果;步驟A33,根據所述比較結果確定所述指定目標節(jié)點在該當前屬性上的取值; 步驟A33,根據確定的取值確定當前屬性對應的輸出結果;步驟A34,判斷是否還存在未被遍歷的屬性,如果是,將未被遍歷的其中一個屬性確定為當前屬性,返回執(zhí)行步驟A32 ;如果否,執(zhí)行步驟A35 ;步驟A35,將所述各個屬性對應的各個輸出結果組成各個集合,對各個集合進行處理, 得到當前維度對應的極值序列集合;判斷當前是否到達預設的合并條件,如果是,執(zhí)行步驟 A36,否則,如果當前還存在未被遍歷的維度,則將其中一個未被遍歷的維度作為當前維度, 返回執(zhí)行步驟A31 ;步驟A36,合并各個維度對應的極值序列集合,將合并后得到的極值序列集合作為維度在節(jié)點屬性值上的極值約束條件集合。
13.根據權利要求12所述的方法,其特征在于,所述比較結果包括大于、等于和小于; 所述步驟A33包括如果比較結果只有小于,等于和小于為0,則取值為Top ; 如果比較結果只有小于和等于,大于為0,則取值為Tops ; 如果比較結果只有大于,小于和大于為0,則取值為Bottom ; 如果比較結果只有大于和等于,小于為0,則取值為Bottoms ; 如果比較結果既有大于又有小于,等于為任意,則取值為Middle ; 如果比較結果只有等于,大于和小于都為0,則取值為Identical。
14.根據權利要求13所述的方法,其特征在于,所述步驟A34包括 如果取值為Top,Bottom,則輸出結果為1,作為極值序列的尾部;如果取值為Tops,Bottoms,則輸出結果為{2,m_l},作為極值序列的開頭或者中間部分,所述m為指定維度集合中維度的數量;如果取值為Identical,則輸出結果為m,作為極值序列的開頭或者中間部分; 如果取值為Middle,則輸出結果為0,作為序列的尾部后續(xù)處理。
15.根據權利要求14所述的方法,其特征在于,所述步驟A35包括將根據所述輸出結果為m得到的第一集合中的元素排列,得到排列集合I; 把第一集合中所有元素都分為Top,Bottom,確定排列集合根據所述輸出結果為1 得到的第二集合為該維度對應的符合條件的第一極值序列;從所述節(jié)點集Un中確定出滿足排列集合&+根據所述輸出結果為{2,m-l}得到的第三集合的子集Uns,把第三集合中的bottoms轉為bottom,tops轉為top,加入至排列集合仏+根據所述輸出結果為{2,m-l}得到的第三集合中,形成第二極值序列;合并所述第一極值序列和第二極值序列,將合并后得到的極值序列確定為當前維度對應的極值序列集合;所述預設條件為第三集合中的元素數量為0。
16.根據權利要求15所述的方法,其特征在于,所述合并第一極值序列和第二極值序列,或者步驟A36中合并各個維度對應的極值序列集合具體包括針對兩個極值序列Sl和S2,如果Sl e S2 JiJSl η S2 = S2,如果S2 e Si,則Sl η S2 =Si,如果Sl = S2,則Sl η S2 = Si,其他則返回Φ。
17.根據權利要求10所述的方法,其特征在于,當基于粗糙集的等價約束條件集合和維度在節(jié)點屬性值上的約束條件集合識別不出所述指定維度集合中的各個維度時,所述步驟B包括步驟Bi,生成待抽取網頁對應的信息集合;步驟Β2,對所述信息集合按照定義的節(jié)點劃分規(guī)則進行劃分,得到信息集合的各個子集;步驟Β3,合并得到的各個子集,得到特征值集合;步驟Β4,根據所述基于粗糙集的等價約束條件集合、維度在節(jié)點屬性值上的約束條件集合和維度在節(jié)點屬性值上的極值約束條件集合對所述特征值集合進行規(guī)則約束,得到用于抽取數據的關聯(lián)約束映射表;步驟Β5,利用所述關聯(lián)約束映射表進行數據抽取。
18.根據權利要求17所述的方法,其特征在于,所述步驟Bl包括 步驟B11,將待抽取網頁解析成DOM樹;步驟Β12,遍歷DOM樹上的所有節(jié)點,將遍歷到的節(jié)點作為當前節(jié)點,執(zhí)行步驟Β13; 步驟Β13,判斷該節(jié)點是否為注釋節(jié)點,如果是,執(zhí)行步驟Β14,否則,執(zhí)行Β15 ; 步驟Β14,判斷DOM樹是否還有節(jié)點沒有遍歷,如果是,將該未被遍歷的其中一個節(jié)點作為當前節(jié)點,返回執(zhí)行步驟Β13,如果否,返回執(zhí)行步驟Bll ;步驟Β15,將該當前節(jié)點添加到信息集合中,返回執(zhí)行步驟Β14。
19.根據權利要求17所述的方法,其特征在于,所述步驟Β2包括步驟Β21,判斷所述信息集合是否為空,如果為空,執(zhí)行步驟Β24,否則執(zhí)行步驟Β22 ; 步驟Β22,遍歷信息集合,將遍歷到的信息集合中的節(jié)點作為當前節(jié)點,執(zhí)行步驟Β23; 步驟Β23,針對定義的每一節(jié)點劃分規(guī)則,判斷當前節(jié)點是否滿足該劃分規(guī)則,如果滿足,則將當前節(jié)點添加到該節(jié)點劃分規(guī)則對應的子集中,返回步驟Β21,如果不滿足,則返回步驟Β21 ;步驟Β2,將最后得到的各個子集作為對所述信息集合按照定義的節(jié)點劃分規(guī)則進行劃分所得到的子集。
20.根據權利要求17所述的方法,其特征在于,所述步驟Β3包括 步驟Β31,初始化一個新的特征值集合;步驟Β32,遍歷步驟Β2得到的子集,將遍歷到的子集作為當前子集,執(zhí)行步驟Β33; 步驟Β33,遍歷當前子集中的節(jié)點,將遍歷到的節(jié)點作為當前節(jié)點,執(zhí)行步驟Β34; 步驟Β34,判斷特征值集合中是否包含該當前節(jié)點,如果包含,執(zhí)行步驟Β36 ;否則,執(zhí)行步驟B35 ;步驟B35,將當前節(jié)點及其對應的特征值添加到特征值集合中,之后執(zhí)行步驟B37 ; 步驟B36,將當前節(jié)點對應的特征值添加到特征值集合中,之后執(zhí)行步驟B37 ; 步驟B37,將該當前節(jié)點設置為已訪問標志Signed,并執(zhí)行步驟B38 ; 步驟B38,判斷當前子集是否有節(jié)點沒有遍歷,如果是,將其中一個未被遍歷的節(jié)點作為當前節(jié)點,返回執(zhí)行步驟B34,如果否,執(zhí)行步驟B39 ;步驟B39,將當前子集設置為已處理完畢的標志;之后執(zhí)行步驟B30 ; 步驟B30,判斷步驟B2得到的子集中是否還存在未被遍歷的子集,如果是,將其中一個未被遍歷的子集作為當前子集,返回執(zhí)行步驟B33,如果否,結束當前流程。
21.根據權利要求17所述的方法,其特征在于,所述步驟B4包括步驟B41,根據所述基于粗糙集的等價約束條件集合生成等價關系劃分映射表; 步驟B42,根據所述等價關系劃分映射表和所述維度在節(jié)點屬性值上的極值約束條件集合生成排序劃分約束映射表;步驟B43,根據所述維度在節(jié)點屬性值上的約束條件集合和所述排序劃分約束映射表生成用于抽取數據的關聯(lián)約束映射表。
22.根據權利要求21所述的方法,其特征在于,不同維度對應不同的基于粗糙集的等價約束條件集合;所述步驟B41包括步驟B411,遍歷各個維度對應的基于粗糙集的等價約束條件集合,將遍歷到的對應維度的等價約束條件集合作為當前約束條件集合;步驟B412,利用當前約束條件集合中的第一個約束條件對所述特征值集合進行等價劃分;步驟B413,判斷當前約束條件集合是否僅包含第一個約束條件,如果是,執(zhí)行步驟 B416,否則,將第一個約束條件之后的約束條件作為當前約束條件,執(zhí)行步驟B414;步驟B414,使用當前約束條件對通過使用上一個約束條件進行等價劃分得到的滿足上一個約束條件的集合進行等價劃分;步驟B415,判斷當前約束條件是否為當前約束條件集合的最后一個約束條件,如果是, 執(zhí)行步驟B416,如果否,將當前約束條件的下一個約束條件作為當前約束條件,返回執(zhí)行步驟B414 ;步驟B416,將滿足最后一個約束條件的集合轉化為“以維度為鍵值,滿足約束的節(jié)點集為值對”的等價關系劃分映射表;步驟B417,判斷各個維度對應的等價約束條件集合中是否還存在未被遍歷的等價約束條件集合,如果是,將其中一個未被遍歷的維度等價約束條件集合作為當前約束結合,執(zhí)行步驟B412,否則,結束當前流程。
23.根據權利要求21所述的方法,其特征在于,所述步驟B42包括步驟B421,遍歷所有維度對應的排序約束條件,將遍歷到的維度對應的排序約束條件作為當前約束條件;所述排序約束條件為維度對應的極值序列;步驟B422,從等價關系劃分映射表中讀取該維度對應的候選節(jié)點集合; 步驟B423,根據當前約束條件對候選節(jié)點集合進行分類,對分類后得到的多個塊集合分別進行塊內排序;步驟B4M,分別從每塊選取指定的TopN個節(jié)點,并按照塊順序依次放到同一個節(jié)點集合中;步驟B425,將該節(jié)點集合存放到“以其所在的維度為鍵值,節(jié)點集為值對”的排序劃分約束映射表中;步驟B似6,判斷是否存在未被遍歷的排序約束條件,如果是,將其中一個未被遍歷的對應維度的排序約束條件作為當前約束條件,返回執(zhí)行步驟B422,否則,結束當前流程。
24.根據權利要求21所述的方法,其特征在于,所述步驟B43包括步驟B431,遍歷所有維度對應的關聯(lián)約束條件,將遍歷到的維度關聯(lián)約束條件作為當前關聯(lián)條件;所述關聯(lián)約束條件為維度在節(jié)點屬性值上的約束條件集合;步驟B432,從排序劃分約束映射表中獲取與當前關聯(lián)條件相關的維度所對應的所有候選節(jié)點;步驟B433,對獲取的所有候選節(jié)點進行積映射,得到一組以節(jié)點對為元素的新集合; 步驟B434,對步驟B433得到新集合中的節(jié)點對進行約束計算,將滿足約束規(guī)則的元素保留,并刪除不滿足約束的節(jié)點對,得到該維度的關聯(lián)約束映射表;步驟B435,判斷是否存在未被遍歷的關聯(lián)約束條件,如果是,將其中一個未被遍歷的關聯(lián)約束條件作為當前約束條件,返回執(zhí)行步驟B432,否則,結束當前流程。
25.根據權利要求17所述的方法,其特征在于,所述步驟B5包括步驟B51,遍歷關聯(lián)約束映射表中維度的候選節(jié)點集合,將該維度的候選節(jié)點集合作為當前集合;步驟B52,判斷當前集合中的節(jié)點個數是否為1,如果是,執(zhí)行步驟B53,否則,執(zhí)行步驟B56 ;步驟B53,根據需求抽取該節(jié)點的相關內容信息,即去除網頁的標記以及相關格式信息;步驟B54,將該信息保存到“以維度為鍵值,節(jié)點信息內容為值對”的信息體集合中; 步驟B55判斷關聯(lián)約束映射表中是否還存在未被遍歷的維度候選節(jié)點集合,如果是, 將其中一個未被遍歷的維度候選節(jié)點集合作為當前集合,返回執(zhí)行步驟B52;否則,結束當前流程;步驟B56,將此待抽取網頁的頁面鏈接、維度標識及其候選節(jié)點集合寫入錯誤處理日志中。
26.一種從網頁中抽取數據的裝置,其特征在于,該裝置包括處理單元,用于定義網頁中節(jié)點的劃分規(guī)則,根據節(jié)點劃分規(guī)則和對訓練樣本網頁的解析,獲取用于抽取網頁中數據的約束規(guī)則集合;抽取單元,用于利用所述約束規(guī)則集合從待抽取的網頁中抽取數據。
27.根據權利要求沈所述的裝置,其特征在于,所述處理單元包括約束條件集合生成子單元,用于根據節(jié)點劃分規(guī)則,生成每一訓練樣本網頁對應的第一約束條件集合和第二約束條件集合;約束規(guī)則集合生成子單元,用于依據第一約束條件集合和第二約束條件集合分別生成對應的約束規(guī)則集合。
28.根據權利要求27所述的裝置,其特征在于,所述約束條件集合生成子單元通過以下操作生成每一訓練樣本網頁對應的第一約束條件集合和第二約束條件集合針對每一訓練樣本網頁,將該訓練樣本網頁解析成DOM樹,并將該DOM樹轉換成節(jié)點集合U;按照定義的不同節(jié)點劃分規(guī)則,將節(jié)點集合U劃分成不同的劃分集合; 根據所述劃分集合,確定指定維度集合對應的節(jié)點存放集合UI中每個節(jié)點的約束集合,將節(jié)點存放集合UI中所有節(jié)點的所有約束集合作為該訓練樣本網頁對應的第一約束條件集合;針對節(jié)點存放集合UI中任意兩個節(jié)點,計算該兩個節(jié)點對應的兩個維度在至少一個屬性上的二元關系,將計算結果記錄在該訓練樣本網頁對應的第二約束條件集合。
29.根據權利要求27所述的裝置,其特征在于,所述約束規(guī)則集合包括基于粗糙集的等價約束條件集合和維度在節(jié)點屬性值上的約束條件集合;或者,所述約束規(guī)則集合包括 基于粗糙集的等價約束條件集合、維度在節(jié)點屬性值上的約束條件集合和維度在節(jié)點屬性值上的極值約束條件集合,其中,所述維度在節(jié)點屬性值上的極值約束條件集合在所述基于粗糙集的等價約束條件集合和維度在節(jié)點屬性值上的約束條件集合識別不出所述指定維度集合中的各個維度時存在。
30.根據權利要求四所述的裝置,其特征在于,所述抽取單元在基于粗糙集的等價約束條件集合和維度在節(jié)點屬性值上的約束條件集合識別不出所述指定維度集合中的各個維度時,包括信息集合生成子單元,用于生成待抽取網頁對應的信息集合; 劃分子單元,用于對所述信息集合按照定義的節(jié)點劃分規(guī)則進行劃分,得到信息集合的各個子集;合并子單元,用于合并得到的各個子集,得到特征值集合;規(guī)則約束子單元,用于根據所述基于粗糙集的等價約束條件集合、維度在節(jié)點屬性值上的約束條件集合和維度在節(jié)點屬性值上的極值約束條件集合對所述特征值集合進行規(guī)則約束,得到用于抽取數據的關聯(lián)約束映射表;抽取子單元,用于利用所述關聯(lián)約束映射表進行數據抽取。
全文摘要
本發(fā)明提供了從網頁中抽取數據方法和裝置,其中,該方法包括步驟A,定義網頁中節(jié)點的劃分規(guī)則,根據節(jié)點劃分規(guī)則和對訓練樣本網頁的解析,獲取用于抽取網頁中數據的約束規(guī)則集合;步驟B,利用所述約束規(guī)則集合從待抽取的網頁中抽取數據。采用本發(fā)明,能夠避免通過編寫正則表達式的方式抽取數據,節(jié)省人力資源。
文檔編號G06F17/30GK102456050SQ20101052763
公開日2012年5月16日 申請日期2010年10月27日 優(yōu)先權日2010年10月27日
發(fā)明者楊俊拯, 王全禮, 肖巍, 鄭長松 申請人:中國移動通信集團四川有限公司