包裝器的維護方法
2023-05-24 10:31:56 1
專利名稱:包裝器的維護方法
技術領域:
本發明涉及一種Web頁面中的包裝器的維護方法。
背景技術:
Internet已經有20多年的歷史了,近幾年才出現了Internet熱,這主要應歸功於Web。Internet提供了世界範圍內網絡互連和通信功能,Web則是一個環球信息資源庫。Web由無數的頁面(Home page主頁)組成,頁面上的信息包羅萬象,而且時時在增加,天天在更新。用戶只要打開瀏覽器就能得到他們感興趣的資料。Web的易用性使千家萬戶都能共享Internet上巨大的信息資源。時下,人人都在談論Web和主頁,翻開報紙或新聞雜誌,幾乎每天都要提到Web和主頁。從一個小商店到一個大公司,從研究機關到學校,無不驕傲地向他人顯示著自己的主頁和Web地址。Web和主頁已經成為計算機和通信領域乃至全社會的熱點。
由於Web上的數據絕大多數是通過HTML語言來展現的。HTML語言的特點就是任何組織或個人都可以很容易地在Web上發布內容多樣、形式各異的信息,結果使得Web上的數據處於雜亂無序的狀態,數據集成性非常差,給Web應用的建立造成了極大的困難。
下面對HTML及XML作以簡單介紹。HTML來自Standard GeneralizedMarkup Language,即標準通用標記語言,簡稱SGML。早在Web未發明之前,SGML就早已存在。正如它的名稱所言,SGML是一種用標記來描述文檔資料的通用語言,它包含了一系列的文檔類型定義(簡稱DTD),DTD中定義了標記的含義,因而SGML的語法是可以擴展的。由於SGML十分龐大,既不容易學,又不容易使用,在計算機上實現也十分困難。鑑於這些因素,Web的發明者——歐洲核子物理研究中心的研究人員根據當時(1989年)計算機技術的能力,提出了HTML語言。HTML只使用SGML中很小一部分標記,例如HTML3.2定義了70種標記。為了便於在計算機上實現,HTML規定的標記是固定的,即HTML語法是不可擴展的,它不需包含DTD。HTML這種固定的語法使它易學易用,在計算機上開發HTML的瀏覽器也十分容易。HTML是Web顯示數據的通用方法HTML著重描述Web頁面的顯示格式。
XML同HTML一樣,都來自SGML。XML是一個精簡的SGML,它將SGML的豐富功能與HTML的易用性結合到Web的應用中。XML保留了SGML的可擴展功能,這使XML從根本上有別於HTML。XML要比HTML強大得多,它不再是固定的標記,而是允許定義數量不限的標記來描述文檔中的資料,允許嵌套的信息結構。HTML只是Web顯示數據的通用方法,而XML提供了一個直接處理Web數據的通用方法。HTML著重描述Web頁面的顯示格式,而XML著重描述的是Web頁面的內容。模式文件通過一系列可嵌套的合法單元定義了合法的XML文件的結構。這樣使得XML文件本身具有了結構化的部分特徵,也使得電腦程式可以進行處理,而不是像HTML一樣無法直接被電腦程式處理。從實例中也可以看出XML頁面信息是結構化的,有些與資料庫結構類似,因而更具訪問性,其檢索結果更有針對性、更準確。並且,XML精簡了一大片SGML難得用一次的功能。正如幾十萬漢字中常用的只不過八千,SGML常用的部分只佔20%,XML拋棄了SGML中不常用的部分,使它一下就精簡了80%。總之,XML使用一個簡單而有靈活的標準格式,為基於Web的應用提供了一個描述數據和交換數據的有效手段。HTML描述了顯示全球數據的通用方法,而XML提供了直接處理全球數據的通用方法。
由於HTML自身的特點,就產生了Web包裝器。包裝器的任務就是負責將HTML格式(具有固定標記)的數據抽取並轉化為具體結構化的數據。包裝器是Web數據集成系統的重要組成部分之一。
另外,由於Web的動態性和不穩定性,使得Web上的HTML文檔經常發生各種改變,比如頁面結構上發生了變化等。同時,由於所有的Web包裝器都和實際的某一類HTML頁面的結構相關的(這是因為不同站點的HTML文檔的結構構成必然是不同的,使得需要用不同的包裝器才能分別從之抽取出數據),因此當頁面結構發生變化是,會使的原有的包裝器失效,不能從變化後的頁面中抽取出數據。網頁的變化主要可以分為兩種情況頁面內容的變化和內容結構的變化。包裝器的特點決定了對於前者類型的變化,由於數據項在HTML文檔中的位置沒有發生變化,而只是值發生變化,因此可以直接抽取。但是對於後者,由於數據項在HTML文檔中的位置發生了變化,使得原有包裝器中的抽取規則中所包含的關於要抽取的數據項的位置的信息不再能夠(部分或者完全)對應於變化後的頁面,使得包裝器失效。
如果一旦包裝器失效,人工維護包裝器將是一件非常麻煩的事情。這是因為,生成包裝器的過程本來就需要大量的時間,而且,當一個公司管理很多包裝器的時候,如果人工維護(從檢測包裝器是否正常工作到重新為變化後的頁面生成新的包裝器)包裝器幾乎是不可能的事情。
針對包裝器的失效問題,以往有一些維護方法,下面簡單介紹之。
以往的包裝器維護的方法都是基於頁面微小變化引起包裝器失效的情況。對於包裝器的驗證,一般採用機器學習的方法來解決這一問題,通過機器學習的方法得到所要抽取欄位的數據模式(Data Pattern)。當發現測試例子與訓練例子的模式有顯著不同時,系統可以發出通知或者可以自動調用修復程序。自動修復程序基於的假設前提是頁面發生的變化只是微小的格式上的變化或者輕微的頁面調整,而欄位的內容往往保持不變。這樣就可以利用前面用於驗證抽取結果的模式在新頁面中重新定位該數據欄位的正確例子。一旦所需要的欄位已經定位,頁面就可以被自動地重新標記,然後根據被標記後的例子再通過歸納學習過程重新得到正確的抽取規則。該方法的缺點在於需要大量的例子學習,而且模式中含有欄位中的字符串,所以可修復的情況較少。
另外一種方法使用了信息檢索中文本相似的方法在頁面中重新定位數據項,該結構識別方法是基於一些很自然的啟發規則,如探測HTML標記的重複序列和相似串的重複模式。Cohen將頁面的變化分兩種情況頁面的格式變化而內容保持不變和頁面格式與內容都發生了變化。對於頁面內容不變的情況,仍然可以利用從上一個版本的頁面中抽取的數據,利用文本的相似比較來重新得到包裝器。對於頁面內容也變化的情況,前一個版本所抽取的數據只能作為近似的例子來輔助重新生成包裝器。該方法的局限性在於只能處理簡單的列表(list)結構,而且對頁面內容變化的情況結構識別的準確性不高。
上述常用方法並沒有對包裝器維護的問題進行很好地解決。
發明內容
針對上述現有包裝器維護的問題和不足之處,本發明提出了一種在Web頁面變化後可自動對包裝器進行維護的包裝器的維護方法。
本發明是這樣實現的一種包裝器的維護方法,包括以下步驟(1)利用原包裝器提取變化前Web中實體的數據項的標誌特徵;(2)利用步驟(1)中的數據項標誌特徵遍歷變化後的Web的HTML樹,從中找出有步驟(1)中的數據項標誌特徵的數據項;(3)對步驟(2)中找出同一實體的數據項,對其劃分語義塊,即按實體將數據項匯聚,並提取實體的數據項描述模式;用該模式匹配HTML同級子樹中的其他實體的數據項描述模式;若a.所述子樹中包含有多個模式的實例,即包含有多個和模式匹配的語義塊,則遞歸處理所有的子節點為根的子樹;b.所述子樹中只包含一個模式的實例的一部分,即只包含一個和模式匹配的語義塊的一部分,則自動合併相鄰子樹;c.所述子樹中恰好含有一個模式的實例,即恰好包含一個和模式匹配的語義塊,則返回所有的語義塊即相關子樹;(4)步驟(3)中得出的語義塊均與模式匹配,從中找出一個與模式匹配較好的,並從中重新生成新的抽取規則,即生成了新包裝器。
優選地,所述標誌特徵具體為數據項的語義特徵、數據項的描述信息及數據項的連結信息。
優選地,所述在變化後Web中抽取數據項具體為,在解析成樹形結構的Web中,從根節點出發,判斷根節點是否符合數據項標誌特徵,若不符合,則遞歸處理其所有子節點,直到遍歷所有節點。
優選地,所述查找數節點過程中,若節點是ELEMENT節點,也即非葉節點,則繼續遞歸檢查其子節點;若節點是TEXT節點,即包含文本值的葉節點,則先判斷該節點中是否包含數據項的注釋信息,如果包含則從該節點出發尋找其對應的數據值,如果該節點中不包含數據項的注釋信息,則檢查語義特徵和連結信息,如果都符合,則將也該節點作為可能的數據項的節點。
優選地,所述自動合併相鄰子樹具體為在根節點的子節點中按照自左至右的順序進行子樹的合併,首先將第二個語義塊加入到第一塊中,判斷合併後的塊是否過度匹配,否則繼續將後面的子樹加入到前面的塊中,直至過度匹配時,則將最後加入的子樹去除後得到一個語義塊,並保留該語義塊;從第一個未加入到塊中的子樹開始重複上述合併操作,直至將該層所有子樹合併;返回完全匹配或部分匹配的語義塊;再返回根節點的其他節點中,重複上述步驟,直到遍歷所有節點。
本發明提供了用於維護包裝器的一個可行的技術和流程,為長期穩定獲取和有效利用Web網頁上的數據提供了一種新的實現方法。本發明正是利用變化前Web實體的描述信息特徵,在變化後Web網頁中提取相應實體的各信息,並通過實體信息得出Web查詢時的抽取規則,即重新生成包裝器。
具體而言,本發明有以下優點(1)提出了一套清晰的生成包裝器的流程;(2)不需要人工的參與;(3)具有能夠達到較高的數據抽取的正確率;(4)基於Java的包裝器維護流程以及維護結果可以很方便的和其他應用系統集成。
下面結合附圖對本發明作出詳細說明。
圖1為本發明的包裝器的應用流程示意圖;圖2為本發明的詳細流程示意圖;圖3為本發明在變化HTML樹中發現可能數據項的流程示意圖;圖4為本發明劃分語義塊的流程示意圖。
具體實施例方式
為了更容易理解本發明,現將相關概念進行說明。
包裝器即是能夠將半結構的或者無結構的數據源中的數據包裝成結構化的或者有模式的半結構化的數據。對於Web包裝器來說,則是將半結構化無模式的HTML頁面中的數據抽取出來得到有模式的半結構化的XML數據。
模式(Schema)指定了可以在文檔中存在的元素、元素可以具有的屬性、數據類型,在元素內部元素的層次結構以及元素在整個文檔中出現的順序。它能夠對標記編制文檔,加強標記參數內部的一致性以及使XML語法分析器能夠確認文檔。在本發明中,用DTD來描述用戶所要抽取的網頁中的數據以及最終從包裝器中得到的結果XML文檔的格式。
HTML樹HTML文檔可以通過XML解析器解析成具有樹形結構的DOM模型,DOM模型具有樹形結構特徵,其中HTML文檔中的每一對標記(tag)對在DOM樹中對應於一個節點。DOM樹即HTML樹。
抽取規則用於從HTML文檔中定位相關需要抽取的信息。抽取規則同時也是包裝器的基礎,它規定了HTML文檔中哪些節點需要抽取出來,並且如何抽取,比如有的可能只需要抽取一個節點的值的一部分。
Xpath,一種針對XML的查詢語言,用於定位XML文檔中的部分內容,操作字符串,操作數字,操作布爾數和匹配XML文檔中的一組節點(Nodes)。XPath表達式的輸出結果可以是以下四種對象中的一種,即節點集(Node Set)、布爾值、數字和字符串。在本發明中,因為已經將HTML文檔解析成為DOM模型,因此用戶所要抽取的每個數據項都有一條基於XPath的抽取規則用於表示該數據項在HTML文檔中的位置。XPath表達式的簡單例子/authors/author[@period=″classical″]含義是在根節點為「authors」的XML文檔中,查詢period屬性(attribute)值為classical的author元素(element)。
Xquery,XML文檔本質上講就是一個以順序和層次為主要結構單元的輪廓。XQuery正是基於XML的這種結構的,它使用這種結構來為同樣範圍內的XML存儲的數據提供查詢能力。更為精確地說,XQuery是以XQuery 1.0以及XPath 2.0數據模型的形式定義的[XQ-DM],並將XML文檔的分析結構描述為有序的、已做上標記的樹,樹上的每一個節點都有一個不同的身份並可能具有簡單的或者複雜的類型。XQuery能夠被用於對沒有任何模式(schema)的XML數據進行查詢,也可以對由World Wide Web Consortium(W3C)XML模式或者由文件類型定義(DTD)來管理的數據進行查詢。需要注意的是XQuery所使用的數據模型與古典的關係模型截然不同,在XQuery沒有層的概念,順序在這裡也不是很重要,並且不支持身份(Identity)。XQuery的每一個查詢都是一個待求值的表達式,並且表達式之間可以進行非常靈活的組合來創建一個新的表達式。在本發明中,通過一個XQuery表達式來抽取一個頁面中所有需要抽取的數據(對應於該頁面數據的模式),其中的每一個數據項分別對應於一個子XQuery查詢表達式。
語義塊,所謂的語義塊即指的是符合頁面數據模式的一個數據項的集合,這個集合在HTML頁面中表現為描述一個實體的信息。比如,amazon中的關於書信息的頁面中,一個語義塊即頁面中的一本書的完整的所有信息,包括書名,作者,出版社,價格等等信息。因此,語義塊中的數據項的出現完全符合頁面數據模式的規定。同時,在HTML文檔的樹形結構中一個語義塊表現為一個或者多個相鄰的子樹,並且如果一個HTML頁面中如果有多個語義塊,這些語義塊通常處於HTML樹結構中的同一層次並且相鄰。
如圖1所示,本發明通過變化後的網頁及維護前的包裝器生成包裝器執行器,抽取所需要的相關數據項,進行包裝器進行驗證,若通過則返回XML文檔,數據抽取成功;若未通過,說明包裝器已不適合數據抽取,則需要對包裝器重新進行維護,以生成適合HTML數據結構變化的包裝器,執行維護後的包裝器執行,並重現進行驗證。由圖1可知,包裝器維護在整個網頁數據抽取系統中的作用和地位是相當重要的,其是數據抽取的關鍵,若不對其進行相應維護,一些主要數據就不可能得到。包裝器維護的技術起到的作用就是擴展了包裝器的工作能力,它使得頁面變化後能夠自動修復原來的不再適用的包裝器,使得包裝器能夠持續的工作下去,因此這樣的包裝器系統能夠更健壯和穩定的提供數據抽取的能力。
如圖2給出了本發明的詳細流程。本發明首先利用變化前的網頁、維護前的包裝器和變化後的網頁計算數據項特徵。
因為變化後的頁面中數據項仍然保留了變化之前的數據項的特徵,這些數據特徵會在之後的步驟中用於在變化後的文檔中發現可能的數據項。因此本發明首先計算這些數據項的特徵。
數據項的語義特徵的計算。通過HTML的正則表達式來描述數據項的語義特徵。比如,價格的表達形式總是「{($)
{1,}(\.)
{0,2}}」,這個正則表達式表明關於價格的數據項的特徵通常為以「$」開頭的小數。這樣,可以將相關正則的數據特徵提取出來。
數據項的描述信息(Annotation)的計算。HTML路徑的表達完全符合XPath標準,其中謂詞[contains(…)]則是標示了注釋信息,同時對於抽取規則,其中每一條規則都是一條HTML路徑,因此在包裝器維護的時候直接可以從變化前頁面的包裝器中得到描述信息。
數據項的連結信息的計算。在上步數據項的描述信息(Annotation)的計算過程中在抽取規則中的HTML路徑中得到。
下面就是在變化後的文檔中發現可能的數據項。根據前面計算出的數據項的特徵,這一步通過深度遍歷變化後的HTML樹並且從中找出可能的數據項。詳細處理流程如圖3所示。處理流程的入口是變化後使得原有包裝器失效的HTML頁面,需要強調的是,此時頁面已經被解析成樹形結構(DOM樹)。根據在上一步中提到的HTML頁面中要抽取的數據項保持的三個基本特徵,即(數據項的語義特徵、數據項的描述信息數和數據項的連結信息)從根節點出發,首先判斷根節點是否符合數據項特徵,如果不符合,則遞歸的處理其所有子節點。如果面對的節點是ELEMENT節點(即非葉節點),則繼續遞歸檢查其子節點。如果面對的節點是TEXT節點(即包含文本值的葉節點),先判斷該節點中是否包含數據項的注釋信息(Annotation),如果包含則從該節點出發尋找其對應的數據值(可能在同一個節點中,也可能在相鄰的節點中);如果該節點中不包含數據項的注釋信息(Annotation),則檢查語義特徵和連結信息,如果都符合,則也將該節點作為可能的數據項的節點。遞歸處理HTML樹結構中的所有節點,直到所有的節點都已經被訪問。
這之後就是本發明的一個重要步驟劃分語義塊了。獲取所有可能的數據項之後,本發明對數據劃分語義塊,其目的在於從中推導出變化後的HTML頁面中的數據的組織結構。在本發明中,認為所有的數據都是處於語義塊中的。這一步驟就是要從可能的數據塊中推導出語義塊。
本發明中,對於HTML樹中一棵子樹和模式之間的匹配存在下列三種情況1、過度匹配(Over match)。子樹中包含有多個模式的實例,即包含有多個和模式匹配的語義塊。
2、部分匹配(Partial match)。子樹中只包含一個模式的實例的一部分,即只包含一個和模式匹配的語義塊的一部分。
3、完全匹配(Full match)。子樹中恰好含有一個模式的實例,即恰好包含一個和模式匹配的語義塊。
該步驟的具體處理流程如圖4所示。流程的輸入是一棵HTML樹結構,其中的所有可能的數據項都已經被發現並且做了標記。流程從HTML樹的根節點出發,首先判斷該HTML樹與模式之間的匹配關係,如果是過度匹配,則繼續遞歸處理所有以該根節點的子節點為樹根的字數。對於HTML樹結構上每個層次的所有子樹統計與模式的總體顯著匹配關係(通過統計HTML同一層次上三種匹配的數目,取其中最大者作為總體顯著匹配關係)作如下不同的處理,如果是過度匹配,則遞歸處理所有的子節點為根的子樹;如果是完全匹配則返回所有的語義塊(即相關子樹);如果是部分匹配,則自動合併相鄰子樹。子樹的合併過程是依據這樣的原則,在k層按照自左至右的順序進行子樹的合併,首先第二塊加入到第一塊中,判斷合併後的塊是否過度匹配,否則繼續將後面的子樹加入到前面的塊中,直至過度匹配時,則將最後加入的子樹去除後得到的塊。從第一個未加入到塊中的子樹開始重複上述合併操作,直至將該層所有子樹合併。最後返回完全匹配或部分匹配的塊;並且回到HTML樹的上一層,繼續按照這個流程判斷。最終流程中止時輸出所有被劃分出來的語義塊。
本發明最後一步,修復規則並且重新生成包裝器。通過前面的所有步驟,已經得到一系列的語義塊,這些語義塊中包含了變化後的頁面中需要抽取的數據,也就是包裝器維護的目的。同時,這些語義塊中的數據都是已經被標記了不同的角色的(通過數據項識別),也就是說所有的語義塊都是符合模式規定的。因此,可以從中找出一個與模式匹配較好的語義塊,然後從中重新生成新的抽取規則。並且,為了使得抽取規則能夠覆蓋儘量多的情況,可以選取多個語義塊來生成抽取規則,並且最終合併這些抽取規則。最後,將抽取規則導出重新生成包裝器,該包裝器可以抽取變化後的頁面中的數據。
本發明首先考慮了模式和HTML樹結構在包裝器維護中的作用,並據此提出了本發明的方案。本發明是完全可以實現的。本發明可通過用戶提供模式,更精確的定義用戶的需求,以及更好的描述頁面所包含的數據的語義信息。而且通過用戶給予的模式,本發明可處理更複雜的內容表達形式。本發明所有的匹配關係以及抽取規則中用到的路徑表達式都使用標準XPath表示,這使得系統具有了極好的標準性、可擴展性以及靈活性。本發明採用了抽取規則和最終形成的包裝器文件分開的策略,使得以java class(java代碼)形式存在的生成的包裝器能夠非常容易的被包含進其他的應用程式,特別是基於java開發的Web應用系統。
權利要求
1.一種包裝器的維護方法,包括以下步驟(1)利用原包裝器提取變化前Web中實體的數據項的標誌特徵;(2)利用步驟(1)中的數據項標誌特徵遍歷變化後的Web的HTML樹,從中找出有步驟(1)中的數據項標誌特徵的數據項;(3)對步驟(2)中找出同一實體的數據項,對其劃分語義塊,即按實體將數據項匯聚,並提取實體的數據項描述模式;用該模式匹配HTML同級子樹中的其他實體的數據項描述模式;若a.所述子樹中包含有多個模式的實例,即包含有多個和模式匹配的語義塊,則遞歸處理所有的子節點為根的子樹;b.所述子樹中只包含一個模式的實例的一部分,即只包含一個和模式匹配的語義塊的一部分,則自動合併相鄰子樹;c.所述子樹中恰好含有一個模式的實例,即恰好包含一個和模式匹配的語義塊,則返回所有的語義塊即相關子樹;(4)步驟(3)中得出的語義塊均與模式匹配,從中找出一個與模式匹配較好的,並從中重新生成新的抽取規則,即生成了新包裝器。
2.如權利要求1所述的包裝器的維護方法,其特徵在於,所述標誌特徵具體為數據項的語義特徵、數據項的描述信息及數據項的連結信息。
3.如權利要求2所述的包裝器的維護方法,其特徵在於,所述在變化後Web中抽取數據項具體為,在解析成樹形結構的Web中,從根節點出發,判斷根節點是否符合數據項標誌特徵,若不符合,則遞歸處理其所有子節點,直到遍歷所有節點。
4.如權利要求3所述的包裝器的維護方法,其特徵在於,所述查找數節點過程中,若節點是ELEMENT節點,也即非葉節點,則繼續遞歸檢查其子節點;若節點是TEXT節點,即包含文本值的葉節點,則先判斷該節點中是否包含數據項的注釋信息,如果包含則從該節點出發尋找其對應的數據值,如果該節點中不包含數據項的注釋信息,則檢查語義特徵和連結信息,如果都符合,則將也該節點作為可能的數據項的節點。
5.如權利要求1所述的包裝器的維護方法,其特徵在於,所述自動合併相鄰子樹具體為在根節點的子節點中按照自左至右的順序進行子樹的合併,首先將第二個語義塊加入到第一塊中,判斷合併後的塊是否過度匹配,否則繼續將後面的子樹加入到前面的塊中,直至過度匹配時,則將最後加入的子樹去除後得到一個語義塊,並保留該語義塊;從第一個未加入到塊中的子樹開始重複上述合併操作,直至將該層所有子樹合併;返回完全匹配或部分匹配的語義塊;再返回根節點的其他節點中,重複上述步驟,直到遍歷所有節點。
全文摘要
本發明公開了一種包裝器的維護方法,利用原包裝器提取變化前Web中實體的數據項的標誌特徵;利用數據項標誌特徵遍歷變化後的Web的HTML樹,從中找出具有該數據項標誌特徵的數據項;找出同一實體的數據項,對其劃分語義塊,即按實體將數據項匯聚,並提取實體的數據項描述模式;用該模式匹配HTML同級子樹中的其他實體的數據項描述模式;若過渡匹配,則遞歸處理所有的子節點為根的子樹;若部分匹配則自動合併相鄰子樹;若完全匹配,則返回所有的語義塊即相關子樹;得出的語義塊均與模式匹配,從中找出一個與模式匹配較好的,並從中重新生成新的抽取規則,即生成了新包裝器。本發明提出了一套清晰的生成包裝器的流程,可以很方便的和其他應用系統集成。
文檔編號G06F17/30GK1588370SQ20041007454
公開日2005年3月2日 申請日期2004年9月8日 優先權日2004年9月8日
發明者孟小峰, 谷明哲, 王海燕, 胡東東, 於峻濤, 易蕾, 李宇 申請人:孟小峰, 谷明哲, 王海燕, 胡東東, 於峻濤, 易蕾, 李宇