国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于XML的WEB數(shù)據(jù)抽取模型研究

2012-01-11 07:03黃淑芹
通化師范學(xué)院學(xué)報 2012年2期
關(guān)鍵詞:結(jié)構(gòu)化文檔數(shù)據(jù)庫

黃淑芹

(安徽財經(jīng)大學(xué) 管理科學(xué)與工程學(xué)院,安徽 蚌埠 233030)

當(dāng)前互聯(lián)網(wǎng)已經(jīng)成為最流行的信息發(fā)布媒體和最具潛力的資源,但目前Web上的數(shù)據(jù)大都以HTML形式出現(xiàn),HTML通常是一個很難用程序手段處理的媒體.由于Web頁面中的很多內(nèi)容的格式編排不合理,使得現(xiàn)在的Web瀏覽器在進行HTML語法分析時非常不嚴謹,另外,現(xiàn)有的WEB數(shù)據(jù)主要目的是為了顯示,用于瀏覽器瀏覽,缺乏對數(shù)據(jù)本身的描述,不含清晰的語義信息,模式也不太明確,這使得應(yīng)用程序無法直接解析并利用Web上海量的信息,造成資源極大的浪費[1],如何充分應(yīng)用web數(shù)據(jù)成為數(shù)據(jù)庫技術(shù)研究的熱點.

本文針對Web上半結(jié)構(gòu)化的數(shù)據(jù),構(gòu)建一個半結(jié)構(gòu)化的數(shù)據(jù)模型;然后研究一種半結(jié)構(gòu)化模型抽取技術(shù),它能自動地從現(xiàn)有數(shù)據(jù)中抽取半結(jié)構(gòu)化模型的數(shù)據(jù).

1 XML技術(shù)的優(yōu)點

W3C開發(fā)的XML[2]是一種半結(jié)構(gòu)化的數(shù)據(jù)模型,能使不同結(jié)構(gòu)的數(shù)據(jù)很容易結(jié)合在一起[3],其數(shù)據(jù)內(nèi)容和顯示數(shù)據(jù)的格式是分離的,并且容易將XML的文檔描述與關(guān)系數(shù)據(jù)庫中的屬性一一對應(yīng)起來,實施精確地查詢與模型抽取[4].XML提供了一個直接處理Web數(shù)據(jù)的通用方法,從根本上解決了Web文檔和其他資源描述所面臨的問題.基于XML從Web文檔中抽取有用信息,以更為結(jié)構(gòu)化的方式顯示出來,為應(yīng)用程序利用Web中的數(shù)據(jù)提供了可能.

2 基于XML的WEB數(shù)據(jù)抽取原理

從XML文檔中提取信息的技術(shù)已經(jīng)比較成熟,這里將信息接口和組織形式各不相同的非結(jié)構(gòu)化的Web數(shù)據(jù)進行結(jié)構(gòu)化處理.先將HTML轉(zhuǎn)化成XHTML,然后根據(jù)抽取規(guī)則對XHTML文檔進行處理,根據(jù)用戶需求抽取有用信息形成XML文檔.具體實現(xiàn)步驟如下:

①給定URL地址,獲取HTML文檔對象.

②使用HTML解析器解析獲得的HTML文檔對象,獲得XHTML文檔.

③根據(jù)用戶需求,分析XHTML文檔,構(gòu)造XSL文件.

④根據(jù)XSL文件將XHTML文檔映射成XML文件.

⑤將XML數(shù)據(jù)寫入數(shù)據(jù)庫.

在HTML向XHTML的轉(zhuǎn)化過程中,借助于Tidy工具實現(xiàn).Tidy[5]是一個免費使用的產(chǎn)品,可用于改正HTML文檔中的常見錯誤并生成格式編排良好的XHTML文檔.Tidy對文檔進行數(shù)據(jù)清洗[6]后,采用基于樹路徑的抽取規(guī)則,用XSL確定數(shù)據(jù)內(nèi)的引用點,并處理清洗過的XHTML文檔,根據(jù)用戶需求,抽取出信息,形成XML結(jié)構(gòu)化文檔.

3 基于XML的WEB數(shù)據(jù)抽取模型

3.1 基于XML的WEB數(shù)據(jù)抽取模型

基于XML的WEB數(shù)據(jù)抽取模型分成三個層次:用戶接口層,數(shù)據(jù)抽取層,數(shù)據(jù)存儲層.如圖1所示.用戶接口層負責(zé)將用戶提交的查詢命令提交給數(shù)據(jù)抽取層,并返回查詢結(jié)果.數(shù)據(jù)抽取層完成數(shù)據(jù)的清洗、轉(zhuǎn)換和抽取,將HTML文檔進行規(guī)范化處理;把規(guī)范化后的HTML文檔轉(zhuǎn)化為XML文檔,得到結(jié)構(gòu)良好的數(shù)據(jù).并將抽取結(jié)果返回用戶界面或存入數(shù)據(jù)庫.數(shù)據(jù)存儲層保存上一層抽取的結(jié)構(gòu)化數(shù)據(jù),以結(jié)構(gòu)化數(shù)據(jù)庫形式進行存儲.由于XML強調(diào)數(shù)據(jù)語義與元素之間的關(guān)系,因此可以很容易將XML的文檔描述與關(guān)系數(shù)據(jù)庫中的屬性對應(yīng)起來.在數(shù)據(jù)存儲層建立多層次Web數(shù)據(jù)庫,提供Web的多維分析與層次化視圖[7].

3.2 基于XML的數(shù)據(jù)抽取的系統(tǒng)實現(xiàn)

用戶界面用Java類來實現(xiàn),因為Java的基本類提供了一套全面的圖形用戶界面類庫.

數(shù)據(jù)庫的連接用Java的JDBC實現(xiàn),JDBC是一種用于執(zhí)行SQL語句的Java API,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成.

XML文檔寫入數(shù)據(jù)庫時,先是建立與XML文檔相對應(yīng)的表結(jié)構(gòu),然后把數(shù)據(jù)寫入DataTable,通過sqldataadapter直接把DataTable中的數(shù)據(jù)Update到數(shù)據(jù)庫.

圖1 基于XML的WEB數(shù)據(jù)抽取模型

4 基于XML的WEB數(shù)據(jù)抽取的實例

4.1 獲取Web頁并映射成XHTML

這里以天氣預(yù)報信息抽取為例.天氣的變化使每天的預(yù)報信息都有所更新,及時分析和抽取各網(wǎng)頁的天氣預(yù)報信息,對做好惡劣天氣防范工作、減少經(jīng)濟損失有重要意義.由于各個網(wǎng)站頁面風(fēng)格不同,這給用戶獲取信息造成不便.圖2顯示了2011年6月5日yahoo網(wǎng)站發(fā)布的蚌埠天氣預(yù)報信息的屏幕快照.現(xiàn)在想抽取天氣的溫度、氣壓、濕度、可見度、露點、風(fēng)力等信息.

圖2 Yahoo發(fā)布的蚌埠天氣預(yù)報信息網(wǎng)頁

信息的抽取通過一個Java類ParseHTMLToXML實現(xiàn).抽取的第一步首先將HTML數(shù)據(jù)轉(zhuǎn)換成XHTML.通過Tidy庫提供的函數(shù)在ParseHTMLToXML.tidyHTML()方法中轉(zhuǎn)換.tidyHTML()方法接收一個由URL指定的Web地址作為參數(shù),并將其轉(zhuǎn)化為輸入流(InputStream)對象,然后利用tidy的Parse方法清洗輸入流,格式化后生成XHTML文檔流(OutputStream)對象.outputXMLToFile()方法用于將XHTML文檔流對象輸出到一個指定路徑的文件中.實現(xiàn)HTML轉(zhuǎn)換成XHTML(XML的子集)的代碼如下.

public static void main(String args[]) {

try {

Document doc = ParseXHTMLToXML.tidyHTML(“http://weather.yahoo.com/china/anhui/bengbu-2127869/”);

ParseXHTMLToXML.outputXMLToFile(doc, “XML” + File.separator + “FORECASTS.xml”);

} catch (ParseXHTMLToXMLException xmle) {

... }

}

轉(zhuǎn)化成XHTML文檔的界面如圖3所示.

圖3 文檔清洗后形成XHTML的部分關(guān)鍵區(qū)域

4.2 查找數(shù)據(jù)內(nèi)的引用點

Tidy清洗與格式化后文檔中大多數(shù)信息依然與最終數(shù)據(jù)表現(xiàn)形式無關(guān),因此需要在XML文檔中找出特定區(qū)域,從該區(qū)域中抽取數(shù)據(jù),而無需過多關(guān)心其他冗余數(shù)據(jù)[8].根據(jù)XHTML文檔可以知道要抽取的信息在一個

標(biāo)記內(nèi).設(shè)置該
為錨點,然后用Xpath[9]路徑表達式確定錨.XPath是一種專門用來在XML文檔中查找信息的語言,我們用XPath路徑來確定表達式.錨點table在全文檔中的絕對路徑表示為:

/html/body/div/div/div/div/div/div

這個表達式指定了從根 元素到錨div的路徑.絕對路徑表達式的方法會導(dǎo)致頁面布局發(fā)生改變時查找失效.所以采用僅與內(nèi)容相關(guān)而與格式無關(guān)的相對路徑指定錨.這時XPath表達式改為:

//div[starts-with(normalize-space(.), 'Feels Like')]

4.3 將數(shù)據(jù)映射成 XML

XSL是由XML派生的語言,使用XSLT通過模式與模板相結(jié)合來轉(zhuǎn)換XML文檔[10],主要用于設(shè)置數(shù)據(jù)的格式,實現(xiàn)了信息內(nèi)容和顯示格式分離.這里建立一個XSL文件,用來標(biāo)識錨,指定如何從錨獲取查找的數(shù)據(jù),以我們所需的格式構(gòu)造一個XML輸出文件顯示查找的數(shù)據(jù).

XSL文件部分代碼如下:

應(yīng)用XSL文件把前面得到的XHTML文檔轉(zhuǎn)化為XML文檔,實現(xiàn)該轉(zhuǎn)化的代碼如下:

public static void main(String args[]) {

try {

Document xhtml = ParseHTMLToXML.parseXMLFromURLString(“file://FORECASTS.xml”);

Document xsl= ParseHTMLToXML.parseXMLFromURLString(“file://XSL/FORECASTS.xsl”);

Document xml = ParseHTMLToXML.transformXML(xhtml, xsl);

ParseXHTMLToXML.outputXMLToFile(“XML” + File.separator + “result.xml”);

} catch (ParseXHTMLToXMLException xmle) {

// ... Do Something ...

}

}

其中parseXMLFromURLString()和transformXML()方法實現(xiàn)對抽取的XHTML文檔在指定的XSL的映射下進行變換,并調(diào)用outputXMLToFile()方法將其輸出到一個xml文件中.

4.4 合并結(jié)果并處理數(shù)據(jù)

如果僅抽取一次,建立一個XML輸出文件就完成了.如果執(zhí)行多次抽取,則可以通過建立的MergeXML方法,把當(dāng)前抽取中獲得的數(shù)據(jù)合并到以前抽取數(shù)據(jù)的XML文件中,并可以通過該文件觀察數(shù)據(jù)抽取的正確性.

4.5 抽取結(jié)果入庫保存

抽取的數(shù)據(jù)可以直接作為結(jié)果輔助決策,也可以存入數(shù)據(jù)庫直接保存.直接存入數(shù)據(jù)庫的代碼如下:

DriverManager.registerDriver(new oracle jdbc driver OracleDriver());

Connection conn=DriverManager. getConnection(“jdbc oracle oci8@”, “username”, “password”);

Oracle.xml.sql.dml.OracleXMLSave Sav=new OracleXMLSave(conn,“tblname”);

Sav.insertXML(xmlOut);

Sav.close();

5 結(jié)束語

隨著網(wǎng)絡(luò)的迅猛發(fā)展,WEB信息抽取會變得越來越重要.本系統(tǒng)移植性較好,大部分代碼可以重復(fù)使用,通過選擇與內(nèi)容相關(guān)但與格式無關(guān)的錨,可以方便、快捷地抽取所需的信息.

參考文獻:

[1]陳佳,胡燕,軒艷艷.一種基于XML的Web信息抽取方法[J].計算機數(shù)字與工程,2007,38(6):101~103.

[2]范立峰.XML實用教程[M].北京:人民郵電出版社,2009:1~13.

[3]周曉梅,王潛平,蘇琳.基于XML的Web數(shù)據(jù)挖掘模型的設(shè)計[J].計算機工程與設(shè)計,2007,28(2):272~274,277.

[4]李姍,黃水源.基于XML的WEB信息抽取模型設(shè)計[J].微計算機信息,2009,25(3-3):207~208,211.

[5]HTML Tidy[EB/OL].http://www.w3.org/MarkUp/

[6]毛國君,段立娟,等.數(shù)據(jù)挖掘原理與算法[M].北京:清華大學(xué)出版社,2007:39~43.

[7]周翔.基于XML的web內(nèi)容挖掘研究[D].重慶:重慶大學(xué),2007.

[8]蓋磊,王海軍,劉俊民.一種基于XML的Web地震信息抽取的實現(xiàn)[J].計算機應(yīng)用與軟件,2007,24(8):103~105.

[9]陳佳.基于XML的Web信息抽取技術(shù)的應(yīng)用研究[D].湖北:武漢理工大學(xué),2007.

[10]陳景霞,張鵬偉.基于XML的Web數(shù)據(jù)挖掘模型的研究[J].情報雜志,2006(11):100~102.

猜你喜歡
結(jié)構(gòu)化文檔數(shù)據(jù)庫
淺談Matlab與Word文檔的應(yīng)用接口
有人一聲不吭向你扔了個文檔
促進知識結(jié)構(gòu)化的主題式復(fù)習(xí)初探
改進的非結(jié)構(gòu)化對等網(wǎng)絡(luò)動態(tài)搜索算法
結(jié)構(gòu)化面試方法在研究生復(fù)試中的應(yīng)用
左顧右盼 瞻前顧后 融會貫通——基于數(shù)學(xué)結(jié)構(gòu)化的深度學(xué)習(xí)
Word文檔 高效分合有高招
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫