1. 程式人生 > >知識圖譜學習與實踐(7)——網頁資料抽取(包裝器的使用)

知識圖譜學習與實踐(7)——網頁資料抽取(包裝器的使用)

        網際網路中蘊含著大量的資料資源,這些資料存在於html的程式碼之中,如何從浩瀚的程式碼中提取有效的資料,針對不同的情況,可以採用多種方法來實現網頁資料的提取。

1 手工方法

        網頁呈現資料的方式,一般都是按照導航頁、列表頁、詳情頁進行設計,這就會使得資料展示存在一定的規律,我們找出這種規律,就可以制定相應的規則,來獲取資料。比如。京東商城中筆記本的列表頁面。

 

 

        我們想要在該頁面提取筆記本的價格資料,則需要對頁面的html程式碼進行分析,獲取其html程式碼,如下所示:

 

 

 

1.1 利用XPath語言

        利用其html程式碼進行資料提取,可以採用XPath語言,XPath即為XML路徑語言(XML Path Language),它是一種用來確定XML文件中某部分位置的語言。XPath基於XML的樹狀結構,提供在資料結構樹中找尋節點的能力。XPath被開發者採用來當作小型查詢語言。

        價格資訊的Xpath程式碼為:

//*[@id=”plist”]/ul/li[5]/div/div[3]/strong

1.2 利用CSS選擇器

        與之類似的,也可以採用CSS選擇器來進行定位筆記本價格,把html程式碼看作是一個dom樹,按照樹的層次結構,利用CSS選擇器來一層層的定位到價格。該筆記本價格資訊的CSS選擇器的表示式為:

#plist>ul>li:nth-child(5)>div>div.p-price>strong

2包裝器歸納

        包裝器就是將資料從網頁中抽取出來,並將資料還原為結構化資料。包裝器歸納是基於有監督學習的,它從標註好的訓練樣例集合中學習資料抽取規則,用於從其它相同標記或相同網頁模板中抽取目標資料。

包裝器歸納主要包括網頁清洗、網頁標註、包裝器空間生成、包裝器評估、包裝器歸納結果等步驟。

2.1 網頁清洗

        網頁清洗主要解決網頁程式碼不規範的問題,比如網頁中的標籤沒有閉合,個別標籤使用不規範等,網頁結構程式碼不嚴謹,就會導致在抽取過程中的噪聲,使用一些工具比如Tidy,對網頁進行規範化處理,可以在後期的抽取過程中減少噪聲的影響。

2.2 網頁標註

        網頁標註就是在網頁上標註所需要抽取的資料,標註的過程可以是在需要抽取的資料位置上打上特殊的標籤,表示這個資料是需要抽取的。比如,我們前面抽取的筆記本的價格資料,就可以在價格標籤上打上特殊符號,將價格資訊標記為抽取資料。

2.3 包裝器空間的生成

        對標註的資料生成XPath集合空間,對生成的集合進行歸納,形成若干個子集。歸納的規則是在子集中的XPath能夠覆蓋多個標註的資料項,具有一定的泛化能力。

2.4 包裝器評估

        對包裝器進行評估,需要採用一定的標準,主要有兩個標準,準確率和召回率。

        準確率。將篩選出來的包裝器對原先訓練的網頁進行標註,統計與人工標註的相同項的數量,除以當前標註的總數量。準確率越高評分越高。

        召回率。將篩選出來的包裝器對原先訓練的網頁進行標註,統計與人工標註的相同項的數量,除以人工標註的總數量。召回率越高評分越高。

        經過前面一系列的步驟之後,得到包裝器歸納結果,也就是筆記本最後搜尋頁面價格資訊的XPath路徑。

2.5 包裝器歸納的簡單舉例

        假如我們的標註資訊,同時標註了n1,n2。它們的XPath分別是:

n1的XPath:/html[1]/body[1]/table[1]/tbody[1]/tr[2]/td[1]

n2的XPath:/html[1]/body[1]/table[1]/tbody[1]/tr[3]/td[1]

        將其歸納到一個集合,然後泛化後得到的XPath可能有兩個:

A: /html[1]/body[1]/table[1]/tbody[1]/tr[3]/td[1];B: //*/td

        進行包裝器評估:

        準確率:包裝器A的準確率高於包裝器B,則A優於B

        召回率:包裝器A的召回率和包裝器B的召回率一樣,則A等於B

        綜上兩個標準比較,選擇包裝器A。

3 自動抽取

        首先來說,網站的資料自動抽取是可行的,因為網站中的資料通常是用很少的一些模板來編碼的,通過挖掘多個數據記錄中的重複模式來尋找這些模板是可能。其次,自動抽取也能夠克服手工方法和包裝器歸納的缺陷。手工方法,僅適用於那些較簡單網站,工作量不大的情況。有監督的包裝器則維護開銷會很大,比如網站改變了以後的模板,之前生成的包裝器就需要相應的進行修改,才能使用。

        網頁資料自動抽取的流程如下所示:

 

         對於需要抽取資料的網頁,需要進行預處理,也就是網頁清洗工作,規範網頁程式碼結構和標籤的使用,然後對網頁進行聚類處理,通過一定的聚類演算法,將特徵相近的網頁歸為一組,然後,根據不同組的聚類網頁,訓練生成相應的包裝器模板,使得每組相似的網頁獲得一個包裝器模板,分別使用不同的包裝器模板,對相應的網頁進行資訊抽取,獲取網頁中的目標資料,最後,將得到的資料儲存到資料庫中。

        網頁資訊自動抽取的一個代表就是RoadRunner,它是自動抽取網頁資料的包裝器,通過比較同類網頁的兩個樣本頁面,然後分析兩個頁面的相似性和不同性,歸納出一個正則文法,然後根據正則文法生成一個網頁所包含的資料模式,最後抽取網頁的資料。

4 三類網頁資料抽取方法的比較

 

手工方法

包裝器歸納

自動抽取

優點

1 對於任何一個網頁都是通用的,簡單快捷;

2 能抽取到使用者感興趣的資料。

1 需要人工標註訓練集;

2 能抽取到使用者高興取得資料;

3 可以運用到規模不大網站的資訊抽取。

1 無監督的方法,無需人工進行資料的標註;

2 可以運用到大規模網站的資訊抽取。

缺點

1 需要對網頁資料進行標註,耗費大量的人力

2 維護成本高;

3 無法處理大量站點的情況。

1 可維護性比較差;

2 需要投入大量的人力去做標註。

1需要相似的網頁作為輸入;

2 抽取的內容可能無法達到預期,會有一些無關資訊。

5 結語

        網頁資訊抽取除了使用包裝器的方法,目前,使用爬蟲技術對網頁資訊進行爬取也很普遍,這些技術並不是單一的一個技術,都有很多技術點組成,存在著一定的交叉。在實際的使用中,大家可以根據具體的情況,採用相應的技術,或者是多項技術的融合,來達到獲取網頁資訊資料的目的。

        本文主要參考王昊奮老師的知識圖譜講座中,關於資訊抽取和發掘部分內容進行的整