本發(fā)明涉及互聯(lián)網(wǎng)數(shù)據(jù)處理技術(shù)領(lǐng)域,具體地說是一種基于xpath的數(shù)據(jù)采集方法。
背景技術(shù):
信息化、數(shù)字化、數(shù)據(jù)化三者帶給企業(yè)的價值會有所不同。信息化代表著科學(xué)決策的起步;數(shù)字化代表著對計算機、互聯(lián)網(wǎng)等高新科技的依賴;而只有數(shù)據(jù)化才代表著信息價值可能最大化的挖掘和利用。
數(shù)據(jù)來源很廣,有來自智能設(shè)備的傳感器,也有人工記錄的數(shù)據(jù),還有一大部分來自互聯(lián)網(wǎng),這些數(shù)據(jù)是雜亂或者分散的,最大的挑戰(zhàn)是信息向數(shù)據(jù)轉(zhuǎn)化過程中的結(jié)構(gòu)化可能帶來的信息丟失,或者是潛在價值挖掘的不足。 通過數(shù)據(jù)采集進行大數(shù)據(jù)的積累會大幅度增加企業(yè)無形資產(chǎn)的比重,前臺業(yè)務(wù)運營對后臺大數(shù)據(jù)的依賴會越來越強。決策的科學(xué)性會大幅增加,創(chuàng)新的失敗概率會降低很多。這些會大幅提升行業(yè)的進入門檻及相互競爭的壁壘。
技術(shù)實現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是針對以上不足之處,提供一種基于xpath的數(shù)據(jù)采集方法,通過動態(tài)調(diào)整針對源數(shù)據(jù)結(jié)構(gòu)的采集規(guī)則,實現(xiàn)高效采集數(shù)據(jù)。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
一種基于xpath的數(shù)據(jù)采集方法,通過建立一系列針對性的xpath路徑規(guī)則配置文件,將目標數(shù)據(jù)進行規(guī)則抽象,即標記某個節(jié)點代表什么數(shù)據(jù),當數(shù)據(jù)更新后,通過規(guī)則能夠找到新的數(shù)據(jù);
在程序中建立一套針對xpath的規(guī)則的解析功能,將xpath規(guī)則路徑進行讀取,并應(yīng)用的數(shù)據(jù)源中;
采集出對應(yīng)的數(shù)據(jù),將數(shù)據(jù)存儲到規(guī)定的位置,存入mongodb數(shù)據(jù)庫中;
如果發(fā)現(xiàn)源數(shù)據(jù)結(jié)構(gòu)有變化,通過修改xpath配置模板,重啟程序,重新讀取配置路徑,進行數(shù)據(jù)再次準確采集,無需重新編譯程序代碼進行修改,提高數(shù)據(jù)采集效率。
xpath是一門在xml文檔中查找信息的語言,xpath基于xml的樹狀結(jié)構(gòu),提供在樹形數(shù)據(jù)結(jié)構(gòu)中的尋點能力;xpath使用路徑表達式選取xml文檔中的節(jié)點或者節(jié)點集,路徑表達式是從一個XML節(jié)點到另一個節(jié)點或者一組節(jié)點的書面步驟順序。
本發(fā)明的一種基于xpath的數(shù)據(jù)采集方法和現(xiàn)有技術(shù)相比,具有以下有益效果:
使用配置文件的方式,實現(xiàn)對網(wǎng)絡(luò)數(shù)據(jù)(網(wǎng)頁,開放API)的數(shù)據(jù)解析和采集,應(yīng)用于大數(shù)據(jù)挖掘,分析;所述方法包括通過外置配置文件的方式實現(xiàn)對xpath的控制和修改,無需編譯程序,可以實現(xiàn)對網(wǎng)絡(luò)數(shù)據(jù)的精準的采集;
程序需要提供xml配置模板,實現(xiàn)對xpath規(guī)則的動態(tài)配置;采集對象需要是xml或者html文檔或頁面;程序需要提供對xml配置模板解析的功能,實現(xiàn)動態(tài)讀取xpath規(guī)則;配置模板需要包含 root節(jié)點,property節(jié)點,seed 種子節(jié)點,extract 采集規(guī)則節(jié)點,page頁面元素對象節(jié)點;
使用該方法可以動態(tài)調(diào)整針對源數(shù)據(jù)結(jié)構(gòu)的采集規(guī)則,實現(xiàn)高效采集數(shù)據(jù)。
附圖說明
圖1是基于xpath的數(shù)據(jù)采集方法的流程圖。
具體實施方式
下面結(jié)合附圖及具體實施例對本發(fā)明作進一步說明。
一種基于xpath的數(shù)據(jù)采集方法,通過建立一系列針對性的xpath路徑規(guī)則配置文件,將目標數(shù)據(jù)進行規(guī)則抽象,即標記某個節(jié)點代表什么數(shù)據(jù),當數(shù)據(jù)更新后,通過規(guī)則能夠找到新的數(shù)據(jù);
在程序中建立一套針對xpath的規(guī)則的解析功能,將xpath規(guī)則路徑進行讀取,并應(yīng)用的數(shù)據(jù)源中;
采集出對應(yīng)的數(shù)據(jù),將數(shù)據(jù)存儲到規(guī)定的位置,存入mongodb數(shù)據(jù)庫中;
如果發(fā)現(xiàn)源數(shù)據(jù)結(jié)構(gòu)有變化,通過修改xpath配置模板,重啟程序,重新讀取配置路徑,進行數(shù)據(jù)再次準確采集,無需重新編譯程序代碼進行修改,提高數(shù)據(jù)采集效率。
xpath是一門在xml文檔中查找信息的語言,xpath基于xml的樹狀結(jié)構(gòu),提供在樹形數(shù)據(jù)結(jié)構(gòu)中的尋點能力;xpath使用路徑表達式選取xml文檔中的節(jié)點或者節(jié)點集,路徑表達式是從一個XML節(jié)點到另一個節(jié)點或者一組節(jié)點的書面步驟順序。
首先需要建立xpath規(guī)則配置文件結(jié)構(gòu)如下
<?xml version="1.0" encoding="UTF-8"?>
<crawler>
<property key="pageid" value="baidu-star" /><!-- 頁面ID -->
<property key="depth" value="3" /><!—采集深度 -->
<!—采集種子-->
<seed name="采集頁面" url="http://www.xxx.com " />
<extract>
<!—配置提取規(guī)則-->
<page name="star" level="1">
<url-match-rule type="regex"></url-match-rule>
<model>
<field name="urls" xpath="http://div[@class='basic-info cmn-clearfix']" />
</model>
</page>
</extract>
</spiderman>
然后,讀取配置文件對象,通過XMLConfBuilder類,將xpath配置文件解析成xml數(shù)據(jù)模型,方便在系統(tǒng)中使用。
最后,將規(guī)則應(yīng)用到從互聯(lián)網(wǎng)請求下來的數(shù)據(jù),并保存到mongodb中。
通過上面具體實施方式,所述技術(shù)領(lǐng)域的技術(shù)人員可容易的實現(xiàn)本發(fā)明。但是應(yīng)當理解,本發(fā)明并不限于上述的具體實施方式。在公開的實施方式的基礎(chǔ)上,所述技術(shù)領(lǐng)域的技術(shù)人員可任意組合不同的技術(shù)特征,從而實現(xiàn)不同的技術(shù)方案。
除說明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。