昌吉學(xué)院計(jì)算機(jī)工程系 仇 崗
烏魯木齊八一中學(xué)義教部 楊 琴
Web數(shù)據(jù)抽取技術(shù)的研究和探討
昌吉學(xué)院計(jì)算機(jī)工程系 仇 崗
烏魯木齊八一中學(xué)義教部 楊 琴
隨著電子商務(wù)的迅猛發(fā)展,網(wǎng)絡(luò)購物受到了大多數(shù)人的青睞,怎么樣才能從眾多的購物網(wǎng)站中找到自己需要的產(chǎn)品,是數(shù)據(jù)抽取技術(shù)的焦點(diǎn)。由于Web數(shù)據(jù)具有半結(jié)構(gòu)化的特征,使得數(shù)據(jù)抽取技術(shù)更加復(fù)雜。如何發(fā)展Web數(shù)據(jù)抽取技術(shù)要充分利用網(wǎng)絡(luò)資源,發(fā)揮Web數(shù)據(jù)抽取潛力。
Web數(shù)據(jù)抽?。籜path;信息抽??;模型
隨著電子商務(wù)的不斷發(fā)展,網(wǎng)絡(luò)購物成為購物的主要渠道,如淘寶網(wǎng)、拍拍網(wǎng)、58同城網(wǎng)、趕集網(wǎng)等大型購物網(wǎng)站的購物交易,已經(jīng)徹底打破了原來面對(duì)面的交易方式。但購物網(wǎng)站太多,往往同一產(chǎn)品在不同網(wǎng)站或者同一網(wǎng)站的不同網(wǎng)店銷售價(jià)格存在差異,客戶需要花費(fèi)大量時(shí)間和精力在茫茫網(wǎng)店中淘出價(jià)格合理的商品, Web數(shù)據(jù)抽取技術(shù)顯得尤為重要。
文章對(duì)Web數(shù)據(jù)抽取的定義和數(shù)據(jù)抽取技術(shù)探討和研究,并提出了基于XPath及正規(guī)表示法的Web數(shù)據(jù)抽取方法,最后簡(jiǎn)單介紹了基于XPath及正規(guī)表示法Web數(shù)據(jù)抽取方法在購物網(wǎng)站的應(yīng)用。
Web數(shù)據(jù)抽取就是從頁面集合中抽取出相關(guān)的數(shù)據(jù),并將這些數(shù)據(jù)用某種易于查詢的數(shù)據(jù)模型來表示。
Web數(shù)據(jù)抽取的主要目的是從半結(jié)構(gòu)化或非結(jié)構(gòu)化的數(shù)據(jù)中抽取出可用數(shù)據(jù)。如購物網(wǎng)站中的商品品牌、名稱、價(jià)格等信息等。數(shù)據(jù)抽取出來后將數(shù)據(jù)保存到相應(yīng)的數(shù)據(jù)庫或XML中以備使用。
Web數(shù)據(jù)抽取技術(shù)主要包括網(wǎng)頁獲取、抽取方法、抽取規(guī)則、數(shù)據(jù)校驗(yàn)和數(shù)據(jù)集成等。在抽取購物網(wǎng)站的頁面中,一般使用網(wǎng)頁包轉(zhuǎn)器對(duì)頁面進(jìn)行處理,Web數(shù)據(jù)抽取過程可以做如下定義:
圖2-1 Web數(shù)據(jù)抽取模型
Web數(shù)據(jù)抽取包括網(wǎng)頁獲取,數(shù)據(jù)抽取,數(shù)據(jù)驗(yàn)證、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)存儲(chǔ)等五個(gè)步驟。其中網(wǎng)頁獲取是根據(jù)指定一組領(lǐng)域網(wǎng)站網(wǎng)址的URL集合使用網(wǎng)絡(luò)爬蟲技術(shù)從網(wǎng)站中獲取網(wǎng)頁材料;數(shù)據(jù)抽取式使用網(wǎng)頁包裝器根據(jù)抽取規(guī)則對(duì)Web頁面進(jìn)行解析處理,抽取數(shù)據(jù)項(xiàng);數(shù)據(jù)驗(yàn)證是為了保證數(shù)據(jù)抽取質(zhì)量以及數(shù)據(jù)規(guī)范性,數(shù)據(jù)轉(zhuǎn)換時(shí)應(yīng)用相關(guān)領(lǐng)域知識(shí)和機(jī)器學(xué)習(xí)等技術(shù)進(jìn)行數(shù)據(jù)糾錯(cuò),并轉(zhuǎn)化成格式嚴(yán)格的XML文檔,如使用Tidy工具對(duì)網(wǎng)頁進(jìn)行編碼情況修改存在標(biāo)記錯(cuò)誤,并轉(zhuǎn)化成XML文檔;數(shù)據(jù)存儲(chǔ)是根據(jù)客戶需求進(jìn)行對(duì)已有數(shù)據(jù)庫查詢或者是從網(wǎng)頁也中獲得數(shù)據(jù),并將客戶的所需資料分類,存儲(chǔ)到關(guān)系數(shù)據(jù)庫中。
基于XPath的正規(guī)表示法的數(shù)據(jù)抽取方法。屬于HTML結(jié)構(gòu)分析方法主要包括使用正規(guī)表示法確定抽取點(diǎn)、利用XPath表示相對(duì)路徑法進(jìn)行數(shù)據(jù)定位和數(shù)據(jù)驗(yàn)證。基于XPath及正規(guī)表示法的數(shù)據(jù)抽取方法抽取過程如圖3-1:
圖3-1 基于XPath和正規(guī)表示法的Web數(shù)據(jù)抽取方法的抽取過程
基于XPath的正規(guī)表示法第一需要從網(wǎng)站中下載頁面,第二需要Tidy工具處理轉(zhuǎn)換為XSL的文檔,第三對(duì)抽取的數(shù)據(jù)進(jìn)行保存。
商品信息來源于不同網(wǎng)站的不同頁面,要實(shí)現(xiàn)相同商品在同一網(wǎng)站或不同網(wǎng)站價(jià)格的對(duì)比必須進(jìn)行Web數(shù)據(jù)抽取。通過基于XPath及正規(guī)表示法的Web數(shù)據(jù)抽取方法,將不同頁面上的商品信息提取到關(guān)系數(shù)據(jù)庫中,并設(shè)計(jì)出B/S模式的價(jià)格對(duì)比完整。
4.1 購物網(wǎng)站的數(shù)據(jù)抽取流程
購物網(wǎng)站由網(wǎng)站搜索、數(shù)據(jù)規(guī)則定義、數(shù)據(jù)抽取,數(shù)據(jù)存儲(chǔ)等四部分組成,定時(shí)進(jìn)行數(shù)據(jù)更新。系統(tǒng)通過用戶定義發(fā)現(xiàn)相關(guān)網(wǎng)站的數(shù)據(jù),并對(duì)用戶定義模式進(jìn)行存儲(chǔ),方便下次使用,不同用戶的數(shù)據(jù)抽取規(guī)則可以共享,形成一個(gè)數(shù)據(jù)規(guī)則庫從而達(dá)到數(shù)據(jù)據(jù)自動(dòng)提取的目的。如圖4-1系統(tǒng)模塊結(jié)構(gòu)圖:
圖4-1 系統(tǒng)模塊結(jié)構(gòu)圖
其中網(wǎng)站搜索模塊是對(duì)用戶提交的主頁面的商品品牌和型號(hào)進(jìn)行詞頻分析,然后提交到數(shù)據(jù)檢索模塊中進(jìn)行檢索,最后將結(jié)果返回到頁面中;數(shù)據(jù)規(guī)則定義模塊是用戶定義或從共享數(shù)據(jù)庫中提取;數(shù)據(jù)抽取模塊包括包裝器和規(guī)則生成模塊,數(shù)據(jù)抽取模塊是將數(shù)據(jù)源HTML頁面通過Tidy修復(fù)規(guī)范化后轉(zhuǎn)換為XHTML,使用基于Xpath的正規(guī)表示法對(duì)數(shù)據(jù)進(jìn)行抽取,并執(zhí)行XSL轉(zhuǎn)換,完成數(shù)據(jù)抽取工作;數(shù)據(jù)存儲(chǔ)模塊是對(duì)數(shù)據(jù)庫添加新的抽取規(guī)則或者存儲(chǔ)相關(guān)網(wǎng)站數(shù)據(jù)的。
4.2 購物網(wǎng)站數(shù)據(jù)庫設(shè)計(jì)
主要數(shù)據(jù)表有商品明細(xì)表、信息表、信息更新表:
表4.1 商品明細(xì)表
表4.2 信息表
表4.3 信息更新表
4.3 部分XPath的生成代碼
Public class XPathGet{
Public ArrayListgetXPath(char a,Stringkeyword)
ThrowsMException,NException{
ArrayListarraylist=newArrayList ()∶
Eleroot=a.getEle()∶
NodeListnl=root.getChildrenNodes()∶
intchangdu=root.getchangdu();
for(inti=0;i〈changdu;i++){
getMaNode(arraylist,nl.item(i),keyword);
輸入的關(guān)鍵字并在Arraylist中查找xpath節(jié)點(diǎn)。
4.4 Web數(shù)據(jù)抽取部分的代碼
String htmlStr=Postlnfor(this.nextPage);
Html str=XMLHelp.tidy(html str);//修正HTML數(shù)據(jù)
XMLFormString(htmlstr);//將HTM數(shù)據(jù)轉(zhuǎn)換成XML
XMLHelp.XMLFromFile(txt1File);//對(duì)XSL文件進(jìn)行處理
XMLHelp.transformXML(doc_str,txt1);//得到相應(yīng)的商品
saveinfor(data);//保存相應(yīng)的商品
XMLHelp.ParseXMLFromFile(txt1linkpath)∶//處理XSL頁面的鏈接的文件
XMLHelp.transformXML(doc_str,nextlink)∶
//得到一個(gè)頁面的鏈接的集合,賦予給Hashset后返回
本文主要介紹了Web數(shù)據(jù)抽取的以及Web數(shù)據(jù)抽取流程模型,并提出了基于XPath及正規(guī)表示法的Web數(shù)據(jù)抽取方法。如何發(fā)展Web數(shù)據(jù)抽取技術(shù)要充分利用網(wǎng)絡(luò)資源,發(fā)揮Web數(shù)據(jù)抽取潛力。
項(xiàng)目名稱:Web信息抽取與數(shù)據(jù)挖掘技術(shù)及其在網(wǎng)絡(luò)輿情監(jiān)測(cè)中的應(yīng)用研究,項(xiàng)目編號(hào):2012YJQT03。