互聯網中蘊含着大量的數據資源,這些數據存在於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 結語
網頁信息抽取除了使用包裝器的方法,目前,使用爬蟲技術對網頁信息進行爬取也很普遍,這些技術並不是單一的一個技術,都有很多技術點組成,存在着一定的交叉。在實際的使用中,大家可以根據具體的情況,采用相應的技術,或者是多項技術的融合,來達到獲取網頁信息數據的目的。
本文主要參考王昊奮老師的知識圖譜講座中,關於信息抽取和發掘部分內容進行的整理。