日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于DOM的Web信息提取方法

發布時間:2024/9/5 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于DOM的Web信息提取方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

摘? 要 文章提出一種基于DOM的Web信息提取方法,通過歸納學習獲得被提取信息的定位路徑,利用XPath和XSLT在數據定位和數據轉換方面的特點編寫提取模式,根據網頁元素與DOM節點對應關系,判斷所獲得信息源是否適用于已有提取模式。 關鍵詞 Web信息提取;DOM;XPath;XSLT;基于DOM的網頁結構判斷 1 引言 Web信息的爆炸性增長,給我們帶來了獲取更多信息的機會,同時,也增加了在紛繁復雜的Web信息庫中準確地獲取信息的困難。例如,使用搜索引擎搜 索信息時,返回信息成千上萬,其中包含大量無用甚至是錯誤的信息,進行人工挑選要耗費時間和精力。另外,由于網頁的編寫方式,編寫風格各種各樣,使得所搜集的信息也不適于結構化存儲。本文提出了一種基于DOM[1]的Web信息提取方法,利用DOM提取信息,并進行相關信息源的搜索,實現信息的精確定位。 2 基本思想 本文的基本思想是:將不夠規范的HTML文檔整理成格式良好的XHTML[2]文檔,再將XHTML文檔解析成一個樹模型——DOM樹,然后圍繞DOM樹進行信息的提取以及相似結構網頁的搜索,提取的結果以XML文檔表示,并進行結構化存儲。如圖1所示: 圖1 設計思想 以下是對各個處理步驟的分析說明: 2.1 整理 HTML用一對預定義的標記來描述包含在其間文本的表現方式,要求標記成對出現。事實上,有許多HTML文檔中的標記不符合HTML語法要求,比如缺乏結束標記等。這些錯誤影響對 HTML文檔的正確解析,因此,為便于解析,首先要對HTML文檔進行整理,將其轉換成XHTML文檔,XHTML嚴格建立在XML基礎之上,并且明確定 義了格式良好的文檔規則。這樣就可以像對待一般XML文檔一樣對待XHTML文檔,可以利用各種XML標準技術來操縱XHTML文檔。 對HTML文檔的整理主要是以下三個方面: (1)為不成對的標記加上結束符“/”,例如<br>加上結束符為<br />; (2)為所有屬性值加上引號,例如,<a href=http://www.w3c.org>加上引號變為<a href=”http://www.w3c.org”>; (3)將URL中所有的“"”換成“/”。 2.2 解析 解析,就是將經過轉換得到的XHTML文檔構造成DOM樹,將文檔中的元素映射成DOM樹中的節點。 DOM全稱是文檔對象模型(Document Object Model, DOM),它根據文檔中標記之間的嵌套關系,將文檔表示為一個樹形結構,文檔中的元素、屬性、以分析的字符數據、注釋以及處理指令等都是節點。 Document是文檔根,是操作整個DOM樹的句柄。 DOM樹是面向對象的文檔模型,樹中的節點都是接口,它們派生于Node接口,每個節點都有各自的特性和操作,處理節點比較方便。 當解析生成DOM樹之后,對HTML文檔中信息的提取,就轉換成為對DOM樹中相應節點的查找,節點位置由定位規則指出,提取模式中的模板按照定位規則的指示提取出相應位置的信息。 解析的處理過程如下,首先找出網頁中所有的開始標記,將其名稱存入標記表。接著逐次找出網頁中每個標記,并檢查其是不是一個有開始 標記與其對應的結束標記或者是注釋標記,如果是沒有對應開始標記的結束標記或者是注釋標記,就刪除該標記;否則,如果是有對應開始標記的結束標記,就將這 個結束標記與其開始標記之間的內容存儲到標記表中,這個內容就是葉節點,重復操作,直到網頁中每個標記都處理完之后,就建立了一個由標記及其所包含內容構成的表,整棵樹被分解成n棵子樹存入表中。然后,將<html>標記設置為根節點,將表中n棵子樹順次添加到根節點下,形成一棵n叉樹。 2.3 信息提取 提取信息分兩步,現生成提取模式,然后利用提取模式提取信息。 2.3.1 提取模式生成 生成提取模式分三個步驟,歸納單個樣本網頁信息塊定位路徑,歸納樣本網頁集合信息塊定位路徑,定位信息塊內信息點路徑。 (1) 歸納單個樣本網頁信息塊定位路徑 根據用戶提供的樣本網頁的結構特點,將樣本網頁按相似結構分塊,本文所感興趣的信息就位于這些相似結構的信息塊中,這也是本文學習提取算法的一個限制條件,即,被提取信息點位于結構相似的信息塊內,各信息點之間沒有其他信息。 單個樣本學習算法如下: IBPATHi=NULL; 先序遍歷解析樹DOMi; 得到的路徑表達式記入treePath; 依次掃描treePath; while(treePath未結束){ 比較兩條路徑中的相應路徑結點; if(兩路徑結點的索引值和孩子結點的索引值相同){ 將該路徑寫入IBPATHi; 比較下一組路徑表達式; } else(結點的索引值相同,而孩子結點的索引值不同){ 截取該路徑表達式中該節點及該節點之前的路徑,將該路徑寫入IBPATHi; 進入下一組路徑比較; } } return IBPATHi; (2) 歸納樣本網頁集合信息塊定位路徑 算法描述如下: LocationIBs=null; for(i=1;i<=m;i++){ Path[i]=null; LocationIB[i]=null; } for(i=1;i<=m;i++) for(j=1;j<=n;j++){ 掃描第j個樣本頁面的DOM樹; 把第j個樣本頁面中的第i項內容的路徑表達式寫入path[i]中,即path[i]=path[i]+{path[i][j]}; } for(i=1;i<=m;i++){ while(path[i]!=null){ 隨機提取一條path[i][j]令其等于apath; apath與path[i]中其它路徑表達式與其它進行比較,獲得被apath覆蓋的正例集合S; path[i]=path[i]-S;//刪除被覆蓋的正例 LocationIB [i]= LocationIB [i]+apath; } } LocationIBs={ LocationIB [1], LocationIB [2],……, LocationIB [m]}; return LocationIBs; }
(3) 信息塊內信息點定位 確定了樣本集合中信息塊的定位路徑之后,可以通過在信息塊內先序遍歷得到具體信息點的定位路徑,這個定位路徑用XPath[3]表示。 2.3.2 提取信息 利用歸納學習得到的XPath,編寫XSLT[4]文檔,就可以根據該文檔轉換DOM中的節點,生成一個XML文檔,這個XML文檔中只保留XPath指定的節點,從而完成信息提取。 2.4 相似網頁搜索 生成的提取模式可以重用于結構相似的網頁,因此,需要判斷所搜集的網頁是否適用于已有提取模式。本文提出利用DOM判斷所搜集網頁是否與樣本結構相似,進而確定是否可利用已有模式提取所搜集網頁中的信息。 2.4.1 判斷相似網頁 從一個網頁到DOM的轉換來看,網頁中的元素都是以嵌套關系轉換成為DOM樹中的節點,每個元素在DOM樹中都有固定位置的節點對應,可以將這個轉換過程抽象成一個函數: 設網頁標記E和DOM樹節點N是兩個集合,一個從E到N的函數f記為:E—>N,是一個滿足以下條件的關系: 對每一個eE,都存在唯一的nN,使<e,n>f,記作f(e)=n,E是函數f的前域,N是函數f的陪域。在表達式f(e)=n中,e是函數的自變元,n是對應于自變元e的函數值。 從函數的定義可以看出,如果f(e)=n-1,f(e)=n2,那么n1=n2。也就是說,一個自變元在一個特定函數下,有唯一的函數值與之對應。利用這種關系可以推斷出一個網頁標記集合按照嵌套關系只能影射為一個DOM樹,這樣,判斷兩個網頁結構是否相似可以轉換為判斷兩個網頁解析得到的DOM樹是否相似。 算法描述如下: 先序遍歷測試網頁的節點列表NodeList1; 獲得NodeList1的長度Length1; 先序遍歷樣本網頁的節點列表NodeList2; 獲得NodeList2的長度Length2; if(Length1=Length2){ for(i=1;i<=Length1;i++){ 取得NodeList1的第i個節點Node1i; 取得Node1i的節點名NodeName1i; 取得NodeList2的第i個節點Node2i; 取得Node2i的節點名NodeName2i; if(NodeName1i不同于NodeName2i){ return false; break; } } retuen true; } else{ return false; } 2.4.2 搜集相似網頁 本文設計了結合判斷網頁結構的爬蟲算法,來完成相關信息源的搜集。 算法描述如下: /*****初始化****/ 設定搜索深度Depath; 設定當前搜索深度currentDepath; 從初始URL取回種子網頁; 從種子網頁中取出所有URL,存入URL列表urlList; 取得樣本網頁DOM樹的結點列表nodeList1; /*****搜索網頁*****/ for(currentDepath<=Depath;currentDepath++){ if(urlList!=NULL){ 以先進先出方法從URL列表中取出一個URL; 從該URL取回測試網頁存入網頁庫; 解析該網頁生成測試DOM樹; 獲得該DOM樹的節點列表nodeList2; if(nodeList1 與nodeList2相同){ 從該測試網頁取出所有URL存入urlList; } else{ 從該測試網頁取出所有URL存入urlList; 將該測試網頁URL從URL列表清除; 將測試網頁從網頁庫中刪除; } } 2.5 格式輸出 提取結果最終要結構化存儲,本文采用XML作為提取結果,它具有以下兩個便于進行結構化存儲的特點: (1) XML數據容易被其他應用程序訪問和使用,方便與其它系統整合。 XML數據結構性強,可以直接被其它應用程序訪問,或者通過XML的查詢語言來訪問也比較方便。這樣,信息提取系統可以方便地為信息集成、信息過濾等其它需要信息提取結果的系統服務。 (2) 提取結果可以容易地表示和轉換為不同格式,滿足不同用戶的需要。 通過使用不同的XSLT文件,同一內容的提取結果可以用不同風格展示,應用在不同的場合,使數據能夠更合理地、有針對性地表現出來。這在推動信息數據表現個人化、風格化的同時,也提高了數據的可重用性。另外通過使用XSLT處理器和XSL樣式表,可以容易地將XML的提取結果轉換為另一種格式,滿足不同需要。 3 方法評價與結論 信息提取技術主要采用以下三個評價指標,即查全率(Recall)和查準率(Precision) 以及F值。查全率是測量被正確提取的信息的比例,而查準率用來測量提取出的信息中有多少是正確的。計算公式如下(P是查準率,R是查全率):

兩者取值在0和1之間,數值越接近1,查全率或查準率就越高。 下面是查全率和查準率的加權幾何平均值,F值評價方法:

其中b 是一個預設值,是P和R的相對權重,b大于1時表示??? P更重要,b小于1時表示R更重要。通常設定為1,表示二者同等重要。這樣用F一個數值就可看出系統的好壞,F值也是越接近1越好。 本文對http://www.oreilly.com/網站的10張網頁樣本和www.amazon.com網站的13張網頁樣本進行測試,測試結果如表1所示: 表1? 系統測試效果表
網站地址 樣本網頁數目 查全率% 查準率% F值%
www.amazon.com 13 96.1 91.1 93.5
www.oreilly.com 10 93.7 88.7 91.1
從表1.1看出,對于結構比較規范的網站,該方法不用太多的學習樣本,就能獲得比較高的查全率和查準率。

轉載于:https://www.cnblogs.com/robertfang/articles/1398592.html

總結

以上是生活随笔為你收集整理的基于DOM的Web信息提取方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。