本發(fā)明涉及信息獲取技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)處理方法和裝置。
背景技術(shù):
隨著web網(wǎng)頁數(shù)量的快速增長,為了使用戶能夠快速準(zhǔn)確的獲得自己感興趣的信息,通常會先對這些頁面數(shù)據(jù)進行信息提取,進行網(wǎng)頁解析。
但是,本領(lǐng)域技術(shù)人員在日常工作中發(fā)現(xiàn)現(xiàn)有技術(shù)中存在如下不足:
現(xiàn)有技術(shù)中的網(wǎng)頁解析方法,在任務(wù)較多時,代碼復(fù)用率低;不同項目解析內(nèi)容不同,當(dāng)多人共同完成時,由于沒有固定的編碼規(guī)范,易造成代碼管理混亂;而且解析結(jié)果均為網(wǎng)頁上的原始值,大多不能直接使用。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種數(shù)據(jù)處理方法和裝置,解決了現(xiàn)有技術(shù)中在任務(wù)較多時代碼復(fù)用率低,當(dāng)多人共同完成時易造成代碼管理混亂,解析結(jié)果均為網(wǎng)頁上的原始值,大多不能直接使用的技術(shù)問題,具有提高代碼復(fù)用率,使代碼管理簡便,可得到能夠直接使用的數(shù)據(jù),降低對解析工作人員的技術(shù)要求的技術(shù)效果。
本申請實施例提供一種數(shù)據(jù)處理方法,應(yīng)用于對網(wǎng)頁的數(shù)據(jù)采集,所述方法包括:獲得第一網(wǎng)頁;根據(jù)所述第一網(wǎng)頁獲得所述第一網(wǎng)頁的對象;根據(jù)所述對象和所述第一網(wǎng)頁獲得所述第一網(wǎng)頁和所述對象之間的第一映射關(guān)系;獲得第二網(wǎng)頁,其中,所述第一網(wǎng)頁和所述第二網(wǎng)頁具有相同的屬性信息;根據(jù)所述第一映射關(guān)系獲得待獲取元素在所述第二網(wǎng)頁中的位置;根據(jù)所述第一映射關(guān)系獲得所述待獲取元素在所述位置的數(shù)據(jù);判斷所述數(shù)據(jù)的數(shù)據(jù)類型;當(dāng)所述數(shù)據(jù)類型是基本數(shù)據(jù)類型時,對所述數(shù)據(jù)進行標(biāo)準(zhǔn)化處理。
進一步地,所述方法還包括:將所述標(biāo)準(zhǔn)化處理后的數(shù)據(jù)存儲到數(shù)據(jù)庫中。
進一步地,所述對象還包括定位注解,所述根據(jù)所述第一映射關(guān)系獲得待獲取元素在所述第二網(wǎng)頁中的位置,具體為:根據(jù)定位注解獲得待獲取元素在所述第二網(wǎng)頁中的位置。
進一步地,所述對象還包括取值注解,所述根據(jù)所述第一映射關(guān)系獲得所述待獲取元素在所述位置的數(shù)據(jù),具體為:通過調(diào)用取值注解獲得所述待獲取元素在所述位置的數(shù)據(jù)。
進一步地,所述方法還包括:當(dāng)所述數(shù)據(jù)類型不是基本數(shù)據(jù)類型時,則獲得第三網(wǎng)頁,其中,所述第一網(wǎng)頁和所述第三網(wǎng)頁具有相同的屬性信息。
本申請實施例還提供一種數(shù)據(jù)處理裝置,所述裝置包括:第一獲得單元,所述第一獲得單元用于獲得第一網(wǎng)頁;第二獲得單元,所述第二獲得單元用于根據(jù)所述第一網(wǎng)頁獲得所述第一網(wǎng)頁的對象;第三獲得單元,所述第三獲得單元用于根據(jù)所述對象和所述第一網(wǎng)頁獲得所述第一網(wǎng)頁和所述對象之間的第一映射關(guān)系;第四獲得單元,所述第四獲得單元用于獲得第二網(wǎng)頁,其中,所述第一網(wǎng)頁和所述第二網(wǎng)頁具有相同的屬性信息;第五獲得單元,所述第五獲得單元用于根據(jù)所述第一映射關(guān)系獲得待獲取元素在所述第二網(wǎng)頁中的位置;第六獲得單元,所述第六獲得單元用于根據(jù)所述第一映射關(guān)系獲得所述待獲取元素在所述位置的數(shù)據(jù);第一判斷單元,所述第一判斷單元用于判斷所述數(shù)據(jù)的數(shù)據(jù)類型;第一處理單元,所述第一處理單元用于當(dāng)所述數(shù)據(jù)類型是基本數(shù)據(jù)類型時,對所述數(shù)據(jù)進行標(biāo)準(zhǔn)化處理。
進一步地,所述裝置還包括:第一存儲單元,所述第一存儲單元用于將所述標(biāo)準(zhǔn)化處理后的數(shù)據(jù)存儲到數(shù)據(jù)庫中。
進一步地,所述裝置還包括:第七獲得單元,所述第七獲得單元用于根據(jù)定位注解獲得待獲取元素在所述第二網(wǎng)頁中的位置。
進一步地,所述裝置還包括:第八獲得單元,所述第八獲得單元用于通過調(diào)用取值注解獲得所述待獲取元素在所述位置的數(shù)據(jù)。
進一步地,所述方法還包括:第九獲得單元,所述第九獲得單元用于當(dāng)所述數(shù)據(jù)類型不是基本數(shù)據(jù)類型時,則獲得第三網(wǎng)頁,其中,所述第一網(wǎng)頁和所述第三網(wǎng)頁具有相同的屬性信息。
本申請實施例中的上述一個或多個技術(shù)方案,至少具有如下一種或多種技術(shù)效果:
1、本申請實施例通過提供一種數(shù)據(jù)處理方法,應(yīng)用于對網(wǎng)頁的數(shù)據(jù)采集,所述方法包括:獲得第一網(wǎng)頁;根據(jù)所述第一網(wǎng)頁獲得所述第一網(wǎng)頁的對象;根據(jù)所述對象和所述第一網(wǎng)頁獲得所述第一網(wǎng)頁和所述對象之間的第一映射關(guān)系;獲得第二網(wǎng)頁,其中,所述第一網(wǎng)頁和所述第二網(wǎng)頁具有相同的屬性信息;根據(jù)所述第一映射關(guān)系獲得待獲取元素在所述第二網(wǎng)頁中的位置;根據(jù)所述第一映射關(guān)系獲得所述待獲取元素在所述位置的數(shù)據(jù);判斷所述數(shù)據(jù)的數(shù)據(jù)類型;當(dāng)所述數(shù)據(jù)類型是基本數(shù)據(jù)類型時,對所述數(shù)據(jù)進行標(biāo)準(zhǔn)化處理,并將標(biāo)準(zhǔn)化處理后的數(shù)據(jù)存儲至數(shù)據(jù)庫中。通過上述技術(shù)方案,解決了現(xiàn)有技術(shù)中網(wǎng)頁解析在任務(wù)較多時代碼復(fù)用率低,當(dāng)多人共同完成時易造成代碼管理混亂,解析結(jié)果均為網(wǎng)頁上的原始值,大多不能直接使用的技術(shù)問題,具有提高代碼復(fù)用率,使代碼管理簡便,可得到能夠直接使用的數(shù)據(jù),降低對解析工作人員的技術(shù)要求的技術(shù)效果。
2、本申請實施例通過建立所述第一網(wǎng)頁與所述對象的第一映射關(guān)系,在后續(xù)完成頁面解析時,具有提高代碼復(fù)用率的技術(shù)效果。
3、本申請實施例通過對頁面解析得到的數(shù)據(jù)進行標(biāo)準(zhǔn)化處理,得到可直接使用的數(shù)據(jù),具有可得到能夠直接使用的解析結(jié)果數(shù)據(jù)的技術(shù)效果。
附圖說明
圖1為本申請實施例提供的一種數(shù)據(jù)處理方法流程圖;
圖2為本申請實施例提供的一種數(shù)據(jù)處理裝置示意圖。
具體實施方式
本申請實施例提供了一種數(shù)據(jù)處理方法和裝置,解決了現(xiàn)有技術(shù)中在任務(wù)較多時代碼復(fù)用率低,當(dāng)多人共同完成時易造成代碼管理混亂,解析結(jié)果均為網(wǎng)頁上的原始值,大多不能直接使用的技術(shù)問題,具有提高代碼復(fù)用率,使代碼管理簡便,可得到能夠直接使用的數(shù)據(jù),降低對解析工作人員的技術(shù)要求的技術(shù)效果。
為了解決上述技術(shù)問題,本發(fā)明提供的思路如下:
本申請實施例提供一種數(shù)據(jù)處理方法,應(yīng)用于對網(wǎng)頁的數(shù)據(jù)采集,所述方法包括:獲得第一網(wǎng)頁;根據(jù)所述第一網(wǎng)頁獲得所述第一網(wǎng)頁的對象;根據(jù)所述對象和所述第一網(wǎng)頁獲得所述第一網(wǎng)頁和所述對象之間的第一映射關(guān)系;獲得第二網(wǎng)頁,其中,所述第一網(wǎng)頁和所述第二網(wǎng)頁具有相同的屬性信息;根據(jù)所述第一映射關(guān)系獲得待獲取元素在所述第二網(wǎng)頁中的位置;根據(jù)所述第一映射關(guān)系獲得所述待獲取元素在所述位置的數(shù)據(jù);判斷所述數(shù)據(jù)的數(shù)據(jù)類型;當(dāng)所述數(shù)據(jù)類型是基本數(shù)據(jù)類型時,對所述數(shù)據(jù)進行標(biāo)準(zhǔn)化處理。通過上述技術(shù)方案,解決了現(xiàn)有技術(shù)中在任務(wù)較多時代碼復(fù)用率低,當(dāng)多人共同完成時易造成代碼管理混亂,解析結(jié)果均為網(wǎng)頁上的原始值,大多不能直接使用的技術(shù)問題,具有提高代碼復(fù)用率,使代碼管理簡便,可得到能夠直接使用的數(shù)據(jù),降低對解析工作人員的技術(shù)要求的技術(shù)效果。
下面通過附圖以及具體實施例對本發(fā)明技術(shù)方案做詳細的說明,應(yīng)當(dāng)理解本申請實施例以及實施例中的具體特征是對本申請技術(shù)方案的詳細的說明,而不是對本申請技術(shù)方案的限定,在不沖突的情況下,本申請實施例以及實施例中的技術(shù)特征可以相互組合。
本文中術(shù)語“和/或”,僅僅是一種描述關(guān)聯(lián)對象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,a和/或b,可以表示:單獨存在a,同時存在a和b,單獨存在b這三種情況。另外,本文中字符“/”,一般表示前后關(guān)聯(lián)對象是一種“或”的關(guān)系。
實施例1:
圖1為本申請實施例提供的一種數(shù)據(jù)處理方法流程圖,所述方法應(yīng)用于對網(wǎng)頁的數(shù)據(jù)采集,具體來說,本申請實施例提供的一種數(shù)據(jù)處理方法,包括三個階段:準(zhǔn)備階段、解析頁面內(nèi)容階段、數(shù)據(jù)持久化階段。
所述準(zhǔn)備階段包括步驟101至步驟103:
步驟101:獲得第一網(wǎng)頁;
步驟102:根據(jù)所述第一網(wǎng)頁獲得所述第一網(wǎng)頁的對象;
具體來說,通過步驟101獲得所述第一網(wǎng)頁后,對所述第一網(wǎng)頁進行分析,根據(jù)對所述第一網(wǎng)頁的分析內(nèi)容,確定所述第一網(wǎng)頁的對象,所述對象具體可以是javabean,javabean是java語言中一種特殊的類,可以將多個對象封裝到一個對象(bean)中,可進行序列化,提供無參考構(gòu)造器,提供getter方法和setter方法訪問對象的屬性。javabean中的“bean”是用于java的可重組軟件組件的慣用叫法。
步驟103:根據(jù)所述對象和所述第一網(wǎng)頁獲得所述第一網(wǎng)頁和所述對象之間的第一映射關(guān)系;
具體來說,將所述第一網(wǎng)頁的網(wǎng)頁信息封裝到所述對象中,則完成將所述第一網(wǎng)頁到所述對象的映射。進一步地,所述對象包括:需要抓取的數(shù)據(jù)、定位注解、取值注解、及數(shù)據(jù)標(biāo)準(zhǔn)化處理。所述第一映射關(guān)系包括:所述第一網(wǎng)頁的需要抓取的數(shù)據(jù)、定位注解、取值注解、及數(shù)據(jù)標(biāo)準(zhǔn)化處理和所述對象的需要抓取的數(shù)據(jù)、定位注解、取值注解、及數(shù)據(jù)標(biāo)準(zhǔn)化處理的映射關(guān)系。通過建立所述第一網(wǎng)頁與所述對象的第一映射關(guān)系,在后續(xù)完成頁面解析時,具有提高代碼復(fù)用率的技術(shù)效果。
其中,所述注解也叫元數(shù)據(jù),是一種代碼級別的說明,可聲明在包、類、字段、方法、局部變量、方法參數(shù)等的前面,用來對這些元素進行說明,注釋;所述數(shù)據(jù)標(biāo)準(zhǔn)化是企業(yè)或組織對數(shù)據(jù)的定義、組織、監(jiān)督和保護進行標(biāo)準(zhǔn)化的過程,由于不同變量常常具有不同的單位和不同的變異程度,在數(shù)據(jù)分析之前,我們通常需要先將數(shù)據(jù)標(biāo)準(zhǔn)化。
所述解析頁面內(nèi)容階段包括步驟104至步驟107:
步驟104:獲得第二網(wǎng)頁,其中,所述第一網(wǎng)頁和所述第二網(wǎng)頁具有相同的屬性信息;
具體來說,可在網(wǎng)絡(luò)上下載得到所述第二網(wǎng)頁,所述第二網(wǎng)頁即為待解析的網(wǎng)頁,其中,所述第一網(wǎng)頁和所述第二網(wǎng)頁具有相同的屬性信息,以便所述第二網(wǎng)頁利用所述第一網(wǎng)頁和所述對象的第一映射關(guān)系進行頁面解析。
步驟105:根據(jù)所述第一映射關(guān)系獲得待獲取元素在所述第二網(wǎng)頁中的位置;
具體來說,所述對象還包括定位注解,所述第一映射關(guān)系包括所述第一網(wǎng)頁的定位注解和所述對象的定位注解的映射關(guān)系。所述定位注解的注解內(nèi)容具體為,通過定位的方式使用jsoup獲取dom中被選中的元素。其中,所述定位可通過元素id、元素屬性、或select選擇器實現(xiàn);所述jsoup是一種java的html解析器,可以直接解析某個url地址、html文本內(nèi)容,可通過dom,css以及類似于jquery的操作方法來取出和操作數(shù)據(jù);所述dom的全稱為documentobjectmodel,即文檔對象模型,定義了訪問和操作html/xml文檔的標(biāo)準(zhǔn)方法,并將對應(yīng)的文檔呈現(xiàn)為帶有元素、屬性和文本的樹結(jié)構(gòu)。
所述根據(jù)所述第一映射關(guān)系獲得待獲取元素在所述第二網(wǎng)頁中的位置,具體為:根據(jù)定位注解獲得待獲取元素在所述第二網(wǎng)頁中的位置,即通過元素id、元素屬性、或select選擇器實現(xiàn)元素等方式定位,使用jsoup來獲得待獲取元素在所述第二網(wǎng)頁中的位置。
步驟106:根據(jù)所述第一映射關(guān)系獲得所述待獲取元素在所述位置的數(shù)據(jù);
具體來說,所述對象還包括取值注解,所述第一映射關(guān)系還包括所述第一網(wǎng)頁的取值注解和所述對象的取值注解的映射關(guān)系。所述取值注解的注解內(nèi)容具體為,通過定位獲得所述待獲取元素的所述位置后,獲取所述元素的值,可通過text、html、attr獲取所述待獲取元素在所述位置的數(shù)據(jù)。所述根據(jù)所述第一映射關(guān)系獲得所述待獲取元素在所述位置的數(shù)據(jù),具體為:通過調(diào)用取值注解獲得所述待獲取元素在所述位置的數(shù)據(jù),即通過text、html、attr獲取所述待獲取元素在所述位置的數(shù)據(jù),對于json數(shù)據(jù)結(jié)構(gòu),可直接使用一個特殊的注解@json來取值。其中,所述json是一種輕量級的數(shù)據(jù)交換格式。
步驟107:判斷所述數(shù)據(jù)的數(shù)據(jù)類型;
具體來說,通過步驟106獲得所述待獲取元素在所述位置的數(shù)據(jù)后,需要判斷所述數(shù)據(jù)的數(shù)據(jù)類型。
步驟108:當(dāng)所述數(shù)據(jù)類型是基本數(shù)據(jù)類型時,對所述數(shù)據(jù)進行標(biāo)準(zhǔn)化處理。
具體來說,當(dāng)所述數(shù)據(jù)類型是基本數(shù)據(jù)類型或者是基本數(shù)據(jù)類型組成的數(shù)組,所述數(shù)據(jù)是不能直接使用的數(shù)據(jù),則對所述數(shù)據(jù)進行標(biāo)準(zhǔn)化處理,得到可直接使用的數(shù)據(jù)。其中,所述基本數(shù)據(jù)類型包括:在java中,每個變量都必須聲明一種類型,java基本數(shù)據(jù)類型包含布爾類型、整型、浮點類型等。
進一步地,所述數(shù)據(jù)持久化階段包括:將所述標(biāo)準(zhǔn)化處理后的數(shù)據(jù)存儲到數(shù)據(jù)庫中。
具體來說,上述步驟得到的標(biāo)準(zhǔn)化處理后的數(shù)據(jù)為可直接使用的數(shù)據(jù),將所述可直接使用的數(shù)據(jù)存儲至數(shù)據(jù)庫,或本地磁盤等位置,可用于后續(xù)使用,節(jié)省時間和資源。
進一步地,所述方法還包括:當(dāng)所述數(shù)據(jù)類型不是基本數(shù)據(jù)類型時,則獲得第三網(wǎng)頁,其中,所述第一網(wǎng)頁和所述第三網(wǎng)頁具有相同的屬性信息。
具體來說,通過步驟107的判斷,當(dāng)所述數(shù)據(jù)類型不是基本數(shù)據(jù)類型時,則需要繼續(xù)獲得第三網(wǎng)頁,即繼續(xù)下載待解析的網(wǎng)頁,并重復(fù)進行步驟104至步驟107。
圖2所示為本申請實施例還提供一種數(shù)據(jù)處理裝置示意圖,所述裝置包括:
第一獲得單元11,所述第一獲得單元用于獲得第一網(wǎng)頁;
第二獲得單元12,所述第二獲得單元用于根據(jù)所述第一網(wǎng)頁獲得所述第一網(wǎng)頁的對象;
第三獲得單元13,所述第三獲得單元用于根據(jù)所述對象和所述第一網(wǎng)頁獲得所述第一網(wǎng)頁和所述對象之間的第一映射關(guān)系;
第四獲得單元14,所述第四獲得單元用于獲得第二網(wǎng)頁,其中,所述第一網(wǎng)頁和所述第二網(wǎng)頁具有相同的屬性信息;
第五獲得單元15,所述第五獲得單元用于根據(jù)所述第一映射關(guān)系獲得待獲取元素在所述第二網(wǎng)頁中的位置;
第六獲得單元16,所述第六獲得單元用于根據(jù)所述第一映射關(guān)系獲得所述待獲取元素在所述位置的數(shù)據(jù);
第一判斷單元17,所述第一判斷單元用于判斷所述數(shù)據(jù)的數(shù)據(jù)類型;
第一處理單元18,所述第一處理單元用于當(dāng)所述數(shù)據(jù)類型是基本數(shù)據(jù)類型時,對所述數(shù)據(jù)進行標(biāo)準(zhǔn)化處理。
進一步地,所述裝置還包括:第一存儲單元,所述第一存儲單元用于將所述標(biāo)準(zhǔn)化處理后的數(shù)據(jù)存儲到數(shù)據(jù)庫中。
進一步地,所述裝置還包括:第七獲得單元,所述第七獲得單元用于根據(jù)定位注解獲得待獲取元素在所述第二網(wǎng)頁中的位置。
進一步地,所述裝置還包括:第八獲得單元,所述第八獲得單元用于通過調(diào)用取值注解獲得所述待獲取元素在所述位置的數(shù)據(jù)。
進一步地,所述裝置還包括:第九獲得單元,所述第九獲得單元用于當(dāng)所述數(shù)據(jù)類型不是基本數(shù)據(jù)類型時,則獲得第三網(wǎng)頁,其中,所述第一網(wǎng)頁和所述第三網(wǎng)頁具有相同的屬性信息。
本申請實施例提供的一種數(shù)據(jù)處理方法和裝置至少具有技術(shù)效果:
1、本申請實施例通過提供一種數(shù)據(jù)處理方法,應(yīng)用于對網(wǎng)頁的數(shù)據(jù)采集,所述方法包括:獲得第一網(wǎng)頁;根據(jù)所述第一網(wǎng)頁獲得所述第一網(wǎng)頁的對象;根據(jù)所述對象和所述第一網(wǎng)頁獲得所述第一網(wǎng)頁和所述對象之間的第一映射關(guān)系;獲得第二網(wǎng)頁,其中,所述第一網(wǎng)頁和所述第二網(wǎng)頁具有相同的屬性信息;根據(jù)所述第一映射關(guān)系獲得待獲取元素在所述第二網(wǎng)頁中的位置;根據(jù)所述第一映射關(guān)系獲得所述待獲取元素在所述位置的數(shù)據(jù);判斷所述數(shù)據(jù)的數(shù)據(jù)類型;當(dāng)所述數(shù)據(jù)類型是基本數(shù)據(jù)類型時,對所述數(shù)據(jù)進行標(biāo)準(zhǔn)化處理,并將標(biāo)準(zhǔn)化處理后的數(shù)據(jù)存儲至數(shù)據(jù)庫中。通過上述技術(shù)方案,解決了現(xiàn)有技術(shù)中網(wǎng)頁解析在任務(wù)較多時代碼復(fù)用率低,當(dāng)多人共同完成時易造成代碼管理混亂,解析結(jié)果均為網(wǎng)頁上的原始值,大多不能直接使用的技術(shù)問題,具有提高代碼復(fù)用率,使代碼管理簡便,可得到能夠直接使用的數(shù)據(jù),降低對解析工作人員的技術(shù)要求的技術(shù)效果。
2、本申請實施例通過建立所述第一網(wǎng)頁與所述對象的第一映射關(guān)系,在后續(xù)完成頁面解析時,具有提高代碼復(fù)用率的技術(shù)效果。
3、本申請實施例通過對頁面解析得到的數(shù)據(jù)進行標(biāo)準(zhǔn)化處理,得到可直接使用的數(shù)據(jù),具有可得到能夠直接使用的解析結(jié)果數(shù)據(jù)的技術(shù)效果。
盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。