本發(fā)明涉及數(shù)據(jù)處理技術(shù),尤其涉及一種數(shù)據(jù)處理方法及服務(wù)器。
背景技術(shù):
通過(guò)頁(yè)面鏈接下載到頁(yè)面數(shù)據(jù)后,還需要對(duì)頁(yè)面數(shù)據(jù)進(jìn)行抽取,得到最終的目標(biāo)數(shù)據(jù)。這個(gè)過(guò)程中,需要調(diào)用下載功能和數(shù)據(jù)抽取功能,然而,目前的下載功能和數(shù)據(jù)抽取功能具有強(qiáng)耦合關(guān)系,即:下載功能執(zhí)行后直接調(diào)用數(shù)據(jù)抽取功能進(jìn)行數(shù)據(jù)抽取。這種方式下,要對(duì)不同的頁(yè)面結(jié)構(gòu)開(kāi)發(fā)不同的數(shù)據(jù)抽取功能;或者,通過(guò)通用的數(shù)據(jù)抽取功能進(jìn)行數(shù)據(jù)抽取,但是不能處理較復(fù)雜的頁(yè)面結(jié)構(gòu)。
可見(jiàn),現(xiàn)有的下載功能和數(shù)據(jù)抽取功能耦合度較高,不易分布式部署網(wǎng)絡(luò)數(shù)據(jù);對(duì)復(fù)雜結(jié)構(gòu)的頁(yè)面數(shù)據(jù)抽取不夠準(zhǔn)確。
技術(shù)實(shí)現(xiàn)要素:
為解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)處理方法及服務(wù)器。
本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法,包括:
從數(shù)據(jù)庫(kù)中分別讀取第一類(lèi)型數(shù)據(jù)和第二類(lèi)型數(shù)據(jù);
將所述第一類(lèi)型數(shù)據(jù)插入第一隊(duì)列中,將所述第二類(lèi)型數(shù)據(jù)插入第二隊(duì)列中;
對(duì)所述第一隊(duì)列進(jìn)行下載處理時(shí),從所述第一隊(duì)列中獲取第一類(lèi)型數(shù)據(jù),依據(jù)所述第一類(lèi)型數(shù)據(jù)下載得到第二類(lèi)型數(shù)據(jù);將所述下載得到的第二類(lèi)型數(shù)據(jù)存入所述數(shù)據(jù)庫(kù);
對(duì)所述第二隊(duì)列進(jìn)行抽取處理時(shí),從所述第二隊(duì)列中獲取第二類(lèi)型數(shù)據(jù),對(duì)所述第二類(lèi)型數(shù)據(jù)進(jìn)行解析,抽取得到對(duì)象數(shù)據(jù);將所述對(duì)象存入所述數(shù)據(jù)庫(kù)。
本發(fā)明實(shí)施例中,所述從數(shù)據(jù)庫(kù)中讀取第一類(lèi)型數(shù)據(jù),為:從數(shù)據(jù)庫(kù)中讀取鏈接類(lèi)型數(shù)據(jù)。
本發(fā)明實(shí)施例中,所述對(duì)所述第二類(lèi)型數(shù)據(jù)進(jìn)行解析,抽取得到對(duì)象數(shù)據(jù),包括:
對(duì)所述第二類(lèi)型數(shù)據(jù)進(jìn)行解析,抽取得到結(jié)構(gòu)化數(shù)據(jù)和/或鏈接類(lèi)型數(shù)據(jù),其中,所述鏈接類(lèi)型數(shù)據(jù)是指所述第一類(lèi)型數(shù)據(jù)。
本發(fā)明實(shí)施例中,所述數(shù)據(jù)庫(kù)對(duì)所述第一類(lèi)型數(shù)據(jù)和所述第二類(lèi)型數(shù)據(jù)進(jìn)行分區(qū)域存儲(chǔ),其中,所述第一類(lèi)型數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中的第一存儲(chǔ)區(qū)域,所述第二類(lèi)型數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中的第二存儲(chǔ)區(qū)域;
所述從數(shù)據(jù)庫(kù)中分別讀取第一類(lèi)型數(shù)據(jù)和第二類(lèi)型數(shù)據(jù),包括:
從所述第一存儲(chǔ)區(qū)域中讀取第一類(lèi)型數(shù)據(jù),從所述第二存儲(chǔ)區(qū)域讀取第二類(lèi)型數(shù)據(jù)。
本發(fā)明實(shí)施例中,所述方法還包括:
循環(huán)執(zhí)行所述下載處理和所述抽取處理,直至所述數(shù)據(jù)庫(kù)中的第一類(lèi)型數(shù)據(jù)和第二類(lèi)型數(shù)據(jù)被處理完成為止。
本發(fā)明實(shí)施例提供的服務(wù)器,包括:
調(diào)度模塊,用于從數(shù)據(jù)庫(kù)中分別讀取第一類(lèi)型數(shù)據(jù)和第二類(lèi)型數(shù)據(jù);將所述第一類(lèi)型數(shù)據(jù)插入第一隊(duì)列中,將所述第二類(lèi)型數(shù)據(jù)插入第二隊(duì)列中;
隊(duì)列模塊,用于通過(guò)第一隊(duì)列存儲(chǔ)第一類(lèi)型數(shù)據(jù),通過(guò)第二隊(duì)列存儲(chǔ)第二類(lèi)型數(shù)據(jù);
下載模塊,用于對(duì)所述第一隊(duì)列進(jìn)行下載處理時(shí),從所述第一隊(duì)列中獲取第一類(lèi)型數(shù)據(jù),依據(jù)所述第一類(lèi)型數(shù)據(jù)下載得到第二類(lèi)型數(shù)據(jù);將所述下載得到的第二類(lèi)型數(shù)據(jù)存入所述數(shù)據(jù)庫(kù);
抽取模塊,用于對(duì)所述第二隊(duì)列進(jìn)行抽取處理時(shí),從所述第二隊(duì)列中獲取第二類(lèi)型數(shù)據(jù),對(duì)所述第二類(lèi)型數(shù)據(jù)進(jìn)行解析,抽取得到對(duì)象數(shù)據(jù);將所述對(duì)象存入所述數(shù)據(jù)庫(kù)。
本發(fā)明實(shí)施例中,所述調(diào)度模塊,具體用于從數(shù)據(jù)庫(kù)中讀取鏈接類(lèi)型數(shù)據(jù)。
本發(fā)明實(shí)施例中,所述抽取模塊,具體用于對(duì)所述第二類(lèi)型數(shù)據(jù)進(jìn)行解析,抽取得到結(jié)構(gòu)化數(shù)據(jù)和/或鏈接類(lèi)型數(shù)據(jù),其中,所述鏈接類(lèi)型數(shù)據(jù)是指所述第一類(lèi)型數(shù)據(jù)。
本發(fā)明實(shí)施例中,所述數(shù)據(jù)庫(kù)對(duì)所述第一類(lèi)型數(shù)據(jù)和所述第二類(lèi)型數(shù)據(jù)進(jìn)行分區(qū)域存儲(chǔ),其中,所述第一類(lèi)型數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中的第一存儲(chǔ)區(qū)域,所述第二類(lèi)型數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中的第二存儲(chǔ)區(qū)域;
所述調(diào)度模塊,具體用于從所述第一存儲(chǔ)區(qū)域中讀取第一類(lèi)型數(shù)據(jù),從所述第二存儲(chǔ)區(qū)域讀取第二類(lèi)型數(shù)據(jù)。
本發(fā)明實(shí)施例中,所述服務(wù)器中的各個(gè)模塊循環(huán)執(zhí)行所述下載處理和所述抽取處理,直至所述數(shù)據(jù)庫(kù)中的第一類(lèi)型數(shù)據(jù)和第二類(lèi)型數(shù)據(jù)被處理完成為止。
本發(fā)明實(shí)施例的技術(shù)方案中,從數(shù)據(jù)庫(kù)中分別讀取第一類(lèi)型數(shù)據(jù)和第二類(lèi)型數(shù)據(jù);將所述第一類(lèi)型數(shù)據(jù)插入第一隊(duì)列中,將所述第二類(lèi)型數(shù)據(jù)插入第二隊(duì)列中;對(duì)所述第一隊(duì)列進(jìn)行下載處理時(shí),從所述第一隊(duì)列中獲取第一類(lèi)型數(shù)據(jù),依據(jù)所述第一類(lèi)型數(shù)據(jù)下載得到第二類(lèi)型數(shù)據(jù);將所述下載得到的第二類(lèi)型數(shù)據(jù)存入所述數(shù)據(jù)庫(kù);對(duì)所述第二隊(duì)列進(jìn)行抽取處理時(shí),從所述第二隊(duì)列中獲取第二類(lèi)型數(shù)據(jù),對(duì)所述第二類(lèi)型數(shù)據(jù)進(jìn)行解析,抽取得到對(duì)象數(shù)據(jù);將所述對(duì)象存入所述數(shù)據(jù)庫(kù)。采用本發(fā)明實(shí)施例的技術(shù)方案,下載功能與數(shù)據(jù)抽取功能相分離,并以隊(duì)列的方式進(jìn)行數(shù)據(jù)的傳遞,使數(shù)據(jù)處理系統(tǒng)高度分離,易于擴(kuò)展;此外,抽取功能使用預(yù)配置的模型進(jìn)行數(shù)據(jù)抽取,使抽取得到的數(shù)據(jù)更準(zhǔn)確,并提高系統(tǒng)的可用性。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例的數(shù)據(jù)處理方法的流程示意圖;
圖2為本發(fā)明實(shí)施例的數(shù)據(jù)處理方法的循環(huán)框圖;
圖3為本發(fā)明實(shí)施例的服務(wù)器的結(jié)構(gòu)組成示意圖。
具體實(shí)施方式
為了能夠更加詳盡地了解本發(fā)明實(shí)施例的特點(diǎn)與技術(shù)內(nèi)容,下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例的實(shí)現(xiàn)進(jìn)行詳細(xì)闡述,所附附圖僅供參考說(shuō)明之用,并非用來(lái)限定本發(fā)明實(shí)施例。
圖1為本發(fā)明實(shí)施例的數(shù)據(jù)處理方法的流程示意圖,如圖1所示,所述數(shù)據(jù)處理方法包括以下步驟:
步驟101:從數(shù)據(jù)庫(kù)中分別讀取第一類(lèi)型數(shù)據(jù)和第二類(lèi)型數(shù)據(jù)。
本發(fā)明實(shí)施例中,第一類(lèi)型數(shù)據(jù)是指鏈接類(lèi)型數(shù)據(jù),這里,鏈接類(lèi)型數(shù)據(jù)是指可以用來(lái)進(jìn)行下載操作的數(shù)據(jù)(以下簡(jiǎn)稱(chēng)為待下載數(shù)據(jù)),例如統(tǒng)一資源定位符(URL,Uniform Resoure Locator)。
本發(fā)明實(shí)施例中,第二類(lèi)型數(shù)據(jù)是指待抽取數(shù)據(jù)。
基于此,所述從數(shù)據(jù)庫(kù)中讀取第一類(lèi)型數(shù)據(jù),為:從數(shù)據(jù)庫(kù)中讀取鏈接類(lèi)型數(shù)據(jù)。
本發(fā)明實(shí)施例中,所述數(shù)據(jù)庫(kù)對(duì)所述第一類(lèi)型數(shù)據(jù)和所述第二類(lèi)型數(shù)據(jù)進(jìn)行分區(qū)域存儲(chǔ),其中,所述第一類(lèi)型數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中的第一存儲(chǔ)區(qū)域,所述第二類(lèi)型數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中的第二存儲(chǔ)區(qū)域。
具體實(shí)現(xiàn)時(shí),第一存儲(chǔ)區(qū)域和第二存儲(chǔ)區(qū)域可以位于不同的磁盤(pán)空間中或者內(nèi)存空間中。對(duì)不同類(lèi)型的數(shù)據(jù)進(jìn)行分區(qū)域存儲(chǔ)可以使得后續(xù)的讀取操作更加快速。
相應(yīng)地,所述從數(shù)據(jù)庫(kù)中分別讀取第一類(lèi)型數(shù)據(jù)和第二類(lèi)型數(shù)據(jù),包括:
從所述第一存儲(chǔ)區(qū)域中讀取第一類(lèi)型數(shù)據(jù),從所述第二存儲(chǔ)區(qū)域讀取第二類(lèi)型數(shù)據(jù)。
步驟102:將所述第一類(lèi)型數(shù)據(jù)插入第一隊(duì)列中,將所述第二類(lèi)型數(shù)據(jù)插入第二隊(duì)列中。
本發(fā)明實(shí)施例提供了數(shù)據(jù)隊(duì)列,具體地,提供了兩個(gè)數(shù)據(jù)隊(duì)列,分別為第一數(shù)據(jù)隊(duì)列和第二數(shù)據(jù)隊(duì)列。其中,將所述第一類(lèi)型數(shù)據(jù)插入第一隊(duì)列中,將所述第二類(lèi)型數(shù)據(jù)插入第二隊(duì)列中。
本發(fā)明實(shí)施例中,數(shù)據(jù)隊(duì)列都有一定的容量,可以從數(shù)據(jù)庫(kù)中將讀取到的數(shù)據(jù)按照先入先出的原則進(jìn)行處理。例如,首次從數(shù)據(jù)庫(kù)中讀取的數(shù)據(jù)量要小于或等于隊(duì)列的容量。在后續(xù)將數(shù)據(jù)存入隊(duì)列時(shí),需要隊(duì)列中有空閑的位置時(shí),才可以將數(shù)據(jù)存入空閑的隊(duì)列中,以避免數(shù)據(jù)露處理。
步驟103:對(duì)所述第一隊(duì)列進(jìn)行下載處理時(shí),從所述第一隊(duì)列中獲取第一類(lèi)型數(shù)據(jù),依據(jù)所述第一類(lèi)型數(shù)據(jù)下載得到第二類(lèi)型數(shù)據(jù);將所述下載得到的第二類(lèi)型數(shù)據(jù)存入所述數(shù)據(jù)庫(kù)。
本發(fā)明實(shí)施例中,依據(jù)所述第一類(lèi)型數(shù)據(jù)下載得到第二類(lèi)型數(shù)據(jù)具體為:依據(jù)鏈接型數(shù)據(jù)下載得到頁(yè)面相關(guān)的數(shù)據(jù)。
步驟104:對(duì)所述第二隊(duì)列進(jìn)行抽取處理時(shí),從所述第二隊(duì)列中獲取第二類(lèi)型數(shù)據(jù),對(duì)所述第二類(lèi)型數(shù)據(jù)進(jìn)行解析,抽取得到對(duì)象數(shù)據(jù);將所述對(duì)象存入所述數(shù)據(jù)庫(kù)。
本發(fā)明實(shí)施例中,對(duì)所述第二類(lèi)型數(shù)據(jù)進(jìn)行解析,抽取得到結(jié)構(gòu)化數(shù)據(jù)和/或鏈接類(lèi)型數(shù)據(jù),其中,所述鏈接類(lèi)型數(shù)據(jù)是指所述第一類(lèi)型數(shù)據(jù)。這里,結(jié)構(gòu)化數(shù)據(jù)是指最終的目標(biāo)數(shù)據(jù),無(wú)需再處理。
本發(fā)明實(shí)施例中,循環(huán)執(zhí)行所述下載處理和所述抽取處理,直至所述數(shù)據(jù)庫(kù)中的第一類(lèi)型數(shù)據(jù)和第二類(lèi)型數(shù)據(jù)被處理完成為止。
采用本發(fā)明實(shí)施例的技術(shù)方案,下載功能與數(shù)據(jù)抽取功能相分離,并以隊(duì)列的方式進(jìn)行數(shù)據(jù)的傳遞,使數(shù)據(jù)處理系統(tǒng)高度分離,易于擴(kuò)展;此外,抽取功能使用預(yù)配置的模型進(jìn)行數(shù)據(jù)抽取,使抽取得到的數(shù)據(jù)更準(zhǔn)確,并提高系統(tǒng)的可用性。
圖2為本發(fā)明實(shí)施例的數(shù)據(jù)處理方法的循環(huán)框圖,如圖2所示,所述方法包括:
1)調(diào)度模塊負(fù)責(zé)將待處理數(shù)據(jù)(包括待下載數(shù)據(jù)和待抽取數(shù)據(jù))插入隊(duì)列中。
2)下載模塊從隊(duì)列中獲取待下載數(shù)據(jù)進(jìn)行下載,下載入庫(kù)的數(shù)據(jù)就是新的待抽取數(shù)據(jù)。
3)抽取模塊從隊(duì)列中獲取待抽取數(shù)據(jù)進(jìn)行數(shù)據(jù)解析,解析結(jié)果為結(jié)構(gòu)化數(shù)據(jù)或者鏈接型數(shù)據(jù)(也即待下載數(shù)據(jù)),將結(jié)構(gòu)化數(shù)據(jù)存入數(shù)據(jù)庫(kù)中的對(duì)象庫(kù);將鏈接型數(shù)據(jù)存入數(shù)據(jù)庫(kù)中作為新的待下載數(shù)據(jù)。
由上述1)、2)和3)形成一個(gè)閉環(huán),一直循環(huán)下去,直至數(shù)據(jù)處理結(jié)束。
圖3為本發(fā)明實(shí)施例的服務(wù)器的結(jié)構(gòu)組成示意圖,如圖3所示,所述服務(wù)器包括:
調(diào)度模塊31,用于從數(shù)據(jù)庫(kù)中分別讀取第一類(lèi)型數(shù)據(jù)和第二類(lèi)型數(shù)據(jù);將所述第一類(lèi)型數(shù)據(jù)插入第一隊(duì)列中,將所述第二類(lèi)型數(shù)據(jù)插入第二隊(duì)列中;
隊(duì)列模塊32,用于通過(guò)第一隊(duì)列存儲(chǔ)第一類(lèi)型數(shù)據(jù),通過(guò)第二隊(duì)列存儲(chǔ)第二類(lèi)型數(shù)據(jù);
下載模塊33,用于對(duì)所述第一隊(duì)列進(jìn)行下載處理時(shí),從所述第一隊(duì)列中獲取第一類(lèi)型數(shù)據(jù),依據(jù)所述第一類(lèi)型數(shù)據(jù)下載得到第二類(lèi)型數(shù)據(jù);將所述下載得到的第二類(lèi)型數(shù)據(jù)存入所述數(shù)據(jù)庫(kù);
抽取模塊34,用于對(duì)所述第二隊(duì)列進(jìn)行抽取處理時(shí),從所述第二隊(duì)列中獲取第二類(lèi)型數(shù)據(jù),對(duì)所述第二類(lèi)型數(shù)據(jù)進(jìn)行解析,抽取得到對(duì)象數(shù)據(jù);將所述對(duì)象存入所述數(shù)據(jù)庫(kù)。
本發(fā)明實(shí)施例中,所述調(diào)度模塊31,具體用于從數(shù)據(jù)庫(kù)中讀取鏈接類(lèi)型數(shù)據(jù)。
本發(fā)明實(shí)施例中,所述抽取模塊34,具體用于對(duì)所述第二類(lèi)型數(shù)據(jù)進(jìn)行解析,抽取得到結(jié)構(gòu)化數(shù)據(jù)和/或鏈接類(lèi)型數(shù)據(jù),其中,所述鏈接類(lèi)型數(shù)據(jù)是指所述第一類(lèi)型數(shù)據(jù)。
本發(fā)明實(shí)施例中,所述數(shù)據(jù)庫(kù)對(duì)所述第一類(lèi)型數(shù)據(jù)和所述第二類(lèi)型數(shù)據(jù)進(jìn)行分區(qū)域存儲(chǔ),其中,所述第一類(lèi)型數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中的第一存儲(chǔ)區(qū)域,所述第二類(lèi)型數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中的第二存儲(chǔ)區(qū)域;
所述調(diào)度模塊31,具體用于從所述第一存儲(chǔ)區(qū)域中讀取第一類(lèi)型數(shù)據(jù),從所述第二存儲(chǔ)區(qū)域讀取第二類(lèi)型數(shù)據(jù)。
本發(fā)明實(shí)施例中,所述服務(wù)器中的各個(gè)模塊循環(huán)執(zhí)行所述下載處理和所述抽取處理,直至所述數(shù)據(jù)庫(kù)中的第一類(lèi)型數(shù)據(jù)和第二類(lèi)型數(shù)據(jù)被處理完成為止。
本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,圖3所示的服務(wù)器中的各單元的實(shí)現(xiàn)功能可參照前述數(shù)據(jù)處理方法的相關(guān)描述而理解。圖3所示的服務(wù)器中的各單元的功能可通過(guò)運(yùn)行于處理器上的程序而實(shí)現(xiàn),也可通過(guò)具體的邏輯電路而實(shí)現(xiàn)。
本發(fā)明實(shí)施例所記載的技術(shù)方案之間,在不沖突的情況下,可以任意組合。
在本發(fā)明所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的方法和智能設(shè)備,可以通過(guò)其它的方式實(shí)現(xiàn)。以上所描述的設(shè)備實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,如:多個(gè)單元或組件可以結(jié)合,或可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的各組成部分相互之間的耦合、或直接耦合、或通信連接可以是通過(guò)一些接口,設(shè)備或單元的間接耦合或通信連接,可以是電性的、機(jī)械的或其它形式的。
上述作為分離部件說(shuō)明的單元可以是、或也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是、或也可以不是物理單元,即可以位于一個(gè)地方,也可以分布到多個(gè)網(wǎng)絡(luò)單元上;可以根據(jù)實(shí)際的需要選擇其中的部分或全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各實(shí)施例中的各功能單元可以全部集成在一個(gè)第二處理單元中,也可以是各單元分別單獨(dú)作為一個(gè)單元,也可以?xún)蓚€(gè)或兩個(gè)以上單元集成在一個(gè)單元中;上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用硬件加軟件功能單元的形式實(shí)現(xiàn)。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。