一種網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備、方法及獲取過程的實(shí)現(xiàn)方法
【專利摘要】本發(fā)明的實(shí)施方式提供了一種網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備與方法,以及實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)獲取過程的方法。所述獲取設(shè)備可以包括爬取器,用于對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取,以得到入口統(tǒng)一資源定位符;解析器,用于根據(jù)得到的入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析,以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù);以及,輸出器,用于對(duì)解析目標(biāo)資源得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行輸出。本發(fā)明可以實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的定向爬取、精確解析、智能輸出。
【專利說(shuō)明】一種網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備、方法及獲取過程的實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的實(shí)施方式涉及信息處理【技術(shù)領(lǐng)域】,尤其涉及一種網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備、網(wǎng)絡(luò)數(shù)據(jù)獲取方法以及實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)獲取過程的方法。
【背景技術(shù)】
[0002]本部分旨在為權(quán)利要求書中陳述的本發(fā)明的實(shí)施方式提供背景或上下文。此處的描述不因?yàn)榘ㄔ诒静糠种芯统姓J(rèn)是現(xiàn)有技術(shù)。
[0003]基于網(wǎng)絡(luò)信息的海量特性,為了獲取需要的網(wǎng)絡(luò)數(shù)據(jù),通常需要利用專用設(shè)備從大量網(wǎng)頁(yè)中進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)收集。比如,常見的爬蟲程序,它能夠根據(jù)需要從網(wǎng)絡(luò)側(cè)中獲取到一定程度上滿足需要的各種網(wǎng)絡(luò)數(shù)據(jù)。但是,發(fā)明人發(fā)現(xiàn),現(xiàn)有的網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備采集到的信息不僅包含用戶需要的信息,而且還大量夾雜著對(duì)于用戶而言無(wú)用的網(wǎng)絡(luò)數(shù)據(jù),從而降低了信息獲取的準(zhǔn)確度和效率。
【發(fā)明內(nèi)容】
[0004]一方面,基于解決上述問題的需要,本發(fā)明提供了一種網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備,其中,該設(shè)備可以包括:
[0005]爬取器,用于對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取,以得到入口統(tǒng)一資源定位符;
[0006]解析器,用于根據(jù)得到的入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析,以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù);以及,
[0007]輸出器,用于對(duì)解析目標(biāo)資源得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行輸出。
[0008]根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述爬取器、解析器、輸出器同時(shí)啟動(dòng),所述爬取器、解析器、輸出器具備同時(shí)執(zhí)行多個(gè)子任務(wù)的能力。
[0009]根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述設(shè)備還可以包括第一阻塞隊(duì)列和第二阻塞隊(duì)列,其中,
[0010]所述爬取器將對(duì)目標(biāo)資源的全局位置進(jìn)行爬取得到的入口統(tǒng)一資源定位符放置于所述第一阻塞隊(duì)列,以便所述解析器從所述第一阻塞隊(duì)列中讀取所述入口統(tǒng)一資源定位符進(jìn)行解析;
[0011]所述解析器將根據(jù)所述入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析而得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)放置于所述第二阻塞隊(duì)列,以便所述輸出器從所述第二阻塞隊(duì)列中讀取所述目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行輸出。
[0012]根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述爬取器、解析器、輸出器各自具有多個(gè)子任務(wù),
[0013]所述爬取器,還用于在其所有子任務(wù)執(zhí)行結(jié)束后,在第一阻塞隊(duì)列設(shè)置和所述解析器子任務(wù)數(shù)相同數(shù)量的第一結(jié)束標(biāo)簽,以便解析器的每一個(gè)子任務(wù)讀取到第一阻塞隊(duì)列中的一個(gè)結(jié)束標(biāo)簽后,結(jié)束相應(yīng)子任務(wù);
[0014]所述解析器,還用于在其所有子任務(wù)執(zhí)行結(jié)束后,在第二阻塞隊(duì)列設(shè)置和所述輸出器子任務(wù)數(shù)相同數(shù)量的第二結(jié)束標(biāo)簽,以便輸出器的每一個(gè)子任務(wù)讀取到第二阻塞隊(duì)列中的一個(gè)結(jié)束標(biāo)簽后,結(jié)束相應(yīng)子任務(wù)。
[0015]根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述設(shè)備還可以包括監(jiān)控器,用于對(duì)網(wǎng)絡(luò)數(shù)據(jù)獲取異常進(jìn)行監(jiān)控,根據(jù)監(jiān)控結(jié)果生成報(bào)警信息,并向預(yù)設(shè)用戶發(fā)送報(bào)警信息,所述網(wǎng)絡(luò)數(shù)據(jù)獲取異常至少包括目標(biāo)資源所在頁(yè)面的DOM結(jié)構(gòu)發(fā)生變化導(dǎo)致的異常。
[0016]根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述設(shè)備還可以包括連接在解析器與輸出器之間的預(yù)處理器,用于對(duì)解析器解析得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行預(yù)處理。
[0017]根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述設(shè)備還可以包括緩存器,用于在爬取器爬取目標(biāo)資源的全局位置后對(duì)目標(biāo)資源所在的頁(yè)面進(jìn)行緩存。
[0018]另一方面,本發(fā)明還提供了一種網(wǎng)絡(luò)數(shù)據(jù)獲取方法,包括:
[0019]對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取,以得到入口統(tǒng)一資源定位符;
[0020]根據(jù)得到的入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析,以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù);
[0021 ] 對(duì)解析目標(biāo)資源得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行輸出。
[0022]根據(jù)本發(fā)明的一個(gè)實(shí)施例,對(duì)目標(biāo)資源的全局位置進(jìn)行爬取的步驟、對(duì)目標(biāo)資源進(jìn)行解析的步驟以及對(duì)目標(biāo)數(shù)據(jù)進(jìn)行輸出的步驟同時(shí)啟動(dòng),且所述步驟能夠通過同時(shí)執(zhí)行多個(gè)子任務(wù)實(shí)現(xiàn)。
[0023]根據(jù)本發(fā)明的一個(gè)實(shí)施例,根據(jù)得到的入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析,以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)包括:
[0024]由目標(biāo)資源所在頁(yè)面的頁(yè)面模板確定目標(biāo)資源相對(duì)于所述全局位置的相對(duì)位置;
[0025]對(duì)根據(jù)所述全局位置和相對(duì)位置確定的目標(biāo)資源按照預(yù)設(shè)條件進(jìn)行解析,以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)。
[0026]根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述預(yù)設(shè)條件包括用于從目標(biāo)資源所在的頁(yè)面開始篩選直至定位到所述目標(biāo)資源的預(yù)設(shè)篩選條件,和/或,用于對(duì)解析目標(biāo)資源進(jìn)行啟動(dòng)或停止控制的預(yù)設(shè)控制條件;
[0027]對(duì)目標(biāo)資源按照預(yù)設(shè)條件進(jìn)行解析以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)具體為對(duì)目標(biāo)資源按照所述預(yù)設(shè)篩選條件和預(yù)設(shè)控制條件進(jìn)行解析以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)。
[0028]根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述目標(biāo)資源具有至少一個(gè)屬性;
[0029]對(duì)目標(biāo)資源按照預(yù)設(shè)條件進(jìn)行解析以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)具體為對(duì)目標(biāo)資源的屬性進(jìn)行解析以得到該屬性對(duì)應(yīng)的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)。
[0030]根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述方法還包括:利用正則表達(dá)式對(duì)所述屬性對(duì)應(yīng)的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行萃取,以獲得所需要的數(shù)據(jù)。
[0031]根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述方法還包括:
[0032]在對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取之前,獲取IP代理列表,選擇該IP代理列表中的一個(gè)可用IP作為代理IP,從而在隱藏當(dāng)前IP的情況下對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取。
[0033]根據(jù)本發(fā)明的一個(gè)實(shí)施例,在對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取之前,如果需要進(jìn)行圖片驗(yàn)證以獲得對(duì)目標(biāo)資源的訪問的情況下,所述方法還包括:[0034]對(duì)所述圖片進(jìn)行切割,將切割后的各個(gè)部分與預(yù)設(shè)訓(xùn)練集進(jìn)行匹配以確定各個(gè)部分對(duì)應(yīng)的內(nèi)容,利用所述各個(gè)部分的內(nèi)容實(shí)現(xiàn)對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的訪問。
[0035]根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述方法還包括:
[0036]控制對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取的頻率或爬取間隔,和/或爬取速度。
[0037]再一方面,本發(fā)明還提供了一種實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)獲取過程的方法,包括:
[0038]配置目標(biāo)文件、條件文件和任務(wù)文件,使所述目標(biāo)文件指明待獲取的位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置,以及所述目標(biāo)資源所在頁(yè)面的頁(yè)面模板,所述任務(wù)文件指明對(duì)網(wǎng)絡(luò)側(cè)目標(biāo)資源的全局位置進(jìn)行爬取以得到入口統(tǒng)一資源定位符的操作、根據(jù)得到的入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)的操作、對(duì)解析目標(biāo)資源得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行輸出的操作對(duì)應(yīng)的任務(wù),所述條件文件指明過程中的各種控制;
[0039]讀取并運(yùn)行配置文件,以執(zhí)行對(duì)網(wǎng)絡(luò)側(cè)目標(biāo)資源的全局位置進(jìn)行爬取以得到入口統(tǒng)一資源定位符的操作,根據(jù)所述入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)的操作,以及對(duì)所述目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行輸出的操作,從而實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)獲取。
【專利附圖】
【附圖說(shuō)明】
[0040]通過參考附圖閱讀下文的詳細(xì)描述,本發(fā)明示例性實(shí)施方式的上述以及其他目的、特征和優(yōu)點(diǎn)將變得易于理解。在附圖中,以示例性而非限制性的方式示出了本發(fā)明的若干實(shí)施方式,其中:
[0041]圖1為本發(fā)明實(shí)施方式的示例性的計(jì)算機(jī)系統(tǒng);
[0042]圖2為本發(fā)明實(shí)施方式的網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備的應(yīng)用場(chǎng)景;
[0043]圖3為本發(fā)明實(shí)施方式的網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備;
[0044]圖4為本發(fā)明實(shí)施方式的網(wǎng)絡(luò)數(shù)據(jù)獲取方法。
【具體實(shí)施方式】
[0045]下面將參考若干示例性實(shí)施方式來(lái)描述本發(fā)明的原理和精神。應(yīng)當(dāng)理解,給出這些實(shí)施方式僅僅是為了使本領(lǐng)域技術(shù)人員能夠更好地理解進(jìn)而實(shí)現(xiàn)本發(fā)明,而并非以任何方式限制本發(fā)明的范圍。相反,提供這些實(shí)施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0046]圖1示出了適于實(shí)現(xiàn)本發(fā)明實(shí)施方式的進(jìn)行信息處理的示例性的計(jì)算系統(tǒng)100的框圖。如圖1所示,計(jì)算系統(tǒng)100可以包括:中央處理單元(CPU) 101、隨機(jī)存取存儲(chǔ)器(RAM)102、只讀存儲(chǔ)器(R0M)103、系統(tǒng)總線104、硬盤控制器105、鍵盤控制器106、串行接口控制器107、并行接口控制器108、顯示控制器109、硬盤110、鍵盤111、串行外部設(shè)備112、并行外部設(shè)備113和顯示器114。這些設(shè)備中,與系統(tǒng)總線104耦合的有CPUlOl、RAM102、R0M103、硬盤控制器105、鍵盤控制器106、串行接口控制器107、并行接口控制器108和顯示控制器109。硬盤110與硬盤控制器105耦合,鍵盤111與鍵盤控制器106耦合,串行外部設(shè)備112與串行接口控制器107耦合,并行外部設(shè)備113與并行接口控制器108耦合,以及顯示器114與顯示控制器109耦合。應(yīng)當(dāng)理解,圖1所述的結(jié)構(gòu)框圖僅僅是為了示例的目的,而不是對(duì)本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況增加或減少某些設(shè)備。
[0047]本領(lǐng)域技術(shù)人員知道,本發(fā)明的實(shí)施方式可以實(shí)現(xiàn)為一種系統(tǒng)、裝置、設(shè)備、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本公開可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件、完全的軟件(包括固件、駐留軟件、微代碼等),或者硬件和軟件結(jié)合的形式。
[0048]在本文中,需要理解的是,所涉及的術(shù)語(yǔ)“全局位置”是相對(duì)于“相對(duì)位置”而言的,全局位置用于指明目標(biāo)資源所在載體的基本單位的位置,而相對(duì)位置用于指明目標(biāo)資源在所述基本單位的位置之下的位置,即目標(biāo)資源相對(duì)于全局路徑的相對(duì)路徑,通過全局位置和相對(duì)位置能夠確定目標(biāo)資源所在的具體位置。比如,目標(biāo)資源為某個(gè)影評(píng)網(wǎng)站的某個(gè)網(wǎng)頁(yè)的左下角的位置的影評(píng)數(shù)據(jù),那么,這里的影評(píng)網(wǎng)站的網(wǎng)頁(yè)即可成為是全局位置,該全局位置標(biāo)明了目標(biāo)資源所在載體(即目標(biāo)資源所在的頁(yè)面)的位置,影評(píng)數(shù)據(jù)所在的網(wǎng)頁(yè)左下角則可以認(rèn)為是相對(duì)位置。需要說(shuō)明的是,這里的“全局位置”與“相對(duì)位置”也是相對(duì)的,由于目標(biāo)資源所在載體的基本單位可以具有不同的層級(jí),比如,前述的目標(biāo)資源所在的頁(yè)面可以認(rèn)為是目標(biāo)資源所在載體的基本單位,也可以將目標(biāo)資源所在的網(wǎng)站作為目標(biāo)資源所在載體的基本單位,對(duì)于前者,頁(yè)面的地址則為全局位置,對(duì)于后者,網(wǎng)站的地址則為全局位置。當(dāng)然,還可以將全局位置定義為比某個(gè)頁(yè)面位置更小的級(jí)別上。盡管目標(biāo)資源的全局位置和相對(duì)位置具有相對(duì)性,但全局位置和相對(duì)位置合在一起則具有絕對(duì)性,即通過全局位置和相對(duì)位置能夠確定目標(biāo)資源所在的位置。此外,附圖或文本中的某個(gè)元素的數(shù)量均用于示例而非限制說(shuō)明,以及任何命名都僅用于區(qū)分,比如,后續(xù)將要提到的“第一線程、第二線程”、“第一結(jié)束標(biāo)簽、第二結(jié)束標(biāo)簽”等,而不具有任何限制含義。
[0049]下面參考本發(fā)明的若干代表性實(shí)施方式,詳細(xì)闡釋本發(fā)明的原理和精神。
[0050]發(fā)明概沭
[0051]本發(fā)明人發(fā)現(xiàn),現(xiàn)有網(wǎng)絡(luò)數(shù)據(jù)的獲取方法對(duì)目標(biāo)資源所在頁(yè)面上滿足一定條件的所有內(nèi)容均進(jìn)行爬取,影響爬取的準(zhǔn)確性和效率。本發(fā)明利用目標(biāo)資源的全局位置和根據(jù)目標(biāo)資源所在頁(yè)面的頁(yè)面模板確定的相對(duì)位置確定要解析的目標(biāo)資源,使解析過程準(zhǔn)確、效率高。同時(shí),還可以采取多子任務(wù)并行處理的模式,提高處理效率。
[0052]在介紹了本發(fā)明的基本思路之后,下面具體介紹本發(fā)明的各種非限制性實(shí)施方式。
[0053]示例性應(yīng)用場(chǎng)景和設(shè)備
[0054]參見圖2所示,該圖示出了網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備的應(yīng)用場(chǎng)景。在該場(chǎng)景中,位于本地側(cè)的電子信息處理設(shè)備21 (比如,計(jì)算機(jī))中包含了網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備22 (當(dāng)然,在本申請(qǐng)的另一種應(yīng)用場(chǎng)景中,網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備也可以不位于電子信息處理設(shè)備之中,而以獨(dú)立裝置的形式存在),用戶20可以通過操作電子信息處理設(shè)備21來(lái)實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備的控制。為了獲取網(wǎng)絡(luò)數(shù)據(jù),網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備22需要向目標(biāo)資源所在的設(shè)備(比如,位于網(wǎng)絡(luò)側(cè)的網(wǎng)絡(luò)服務(wù)器23)發(fā)送獲取請(qǐng)求,該獲取請(qǐng)求可以嵌入到一般的頁(yè)面訪問請(qǐng)求之中。網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備22通過網(wǎng)絡(luò)與目標(biāo)資源所在設(shè)備建立連接后,網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備22包含的爬取器221,則可以開始工作,對(duì)網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取操作,比如,目標(biāo)資源所在的網(wǎng)頁(yè)的URL地址。通常而言,一個(gè)網(wǎng)站可能包括多個(gè)頁(yè)面,如果在多個(gè)頁(yè)面中均有目標(biāo)資源,那么,爬取器可以爬取到多個(gè)頁(yè)面的URL地址,這個(gè)地址可以稱為入口統(tǒng)一資源定位符(URL)。
[0055]在本應(yīng)用場(chǎng)景中,網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備22除可以包括如上所述的爬取器221外,還可以包括解析器222,用于根據(jù)爬取器爬取到的入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析。在本應(yīng)用場(chǎng)景中,爬取器221爬取目標(biāo)資源的全局位置得到的入口統(tǒng)一資源定位符將作為目標(biāo)資源的全局路徑(XPATH)。解析器在對(duì)目標(biāo)資源解析過程中,一方面要獲取目標(biāo)資源的全局位置以確定入口統(tǒng)一資源定位符,另一方面還需要確定目標(biāo)資源的相對(duì)位置。在本應(yīng)用場(chǎng)景中,可以通過預(yù)先存儲(chǔ)的目標(biāo)資源所在頁(yè)面的頁(yè)面模板來(lái)確定相對(duì)位置,頁(yè)面模板對(duì)頁(yè)面的架構(gòu)進(jìn)行了描述,通過與頁(yè)面模板的比對(duì),可以確定目標(biāo)資源在入口統(tǒng)一資源定位符所確定的頁(yè)面中的位置(即相對(duì)位置),進(jìn)而可以將目標(biāo)資源對(duì)應(yīng)的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)解析出來(lái)。具體解析時(shí),目標(biāo)資源可能包含不同的數(shù)據(jù)字段,不同的數(shù)據(jù)字段可以用于收集不同類別的數(shù)據(jù),比如,需要爬取的目標(biāo)資源為“影評(píng)”,在“影評(píng)”這個(gè)目標(biāo)資源中可能包括標(biāo)題字段(指明影評(píng)的對(duì)象,比如某個(gè)電影的名稱)、影評(píng)人字段(指明影評(píng)的評(píng)論者)、影評(píng)內(nèi)容字段等,為了對(duì)應(yīng)地得到每個(gè)數(shù)據(jù)字段的“值”,可以建立一個(gè)對(duì)應(yīng)的數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)包含對(duì)應(yīng)的字段,通過解析器的解析過程將目標(biāo)資源中的各個(gè)字段對(duì)應(yīng)的“值”解析到該數(shù)據(jù)庫(kù)中的對(duì)應(yīng)字段。
[0056]網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備22還可以包括輸出器223,用于對(duì)解析目標(biāo)資源得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行輸出。輸出的具體方式可以多種多樣,比如可以直接打印到屏幕上(稱為console方式),或者打印到excel文件中(稱為excel方式),或者打印到數(shù)據(jù)庫(kù)中(比如0ralC、mySql等)。其中,打印到數(shù)據(jù)庫(kù)通常適用于目標(biāo)資源存在多個(gè)數(shù)據(jù)字段的情況,這時(shí)需要確保在解析目標(biāo)資源時(shí)字段與數(shù)據(jù)庫(kù)中的字段的一一對(duì)應(yīng)。
[0057]網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備22獲取網(wǎng)絡(luò)數(shù)據(jù)的過程實(shí)際上是執(zhí)行任務(wù)的過程,任務(wù)執(zhí)行完畢即可得到需要的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)。在本應(yīng)用場(chǎng)景中,“任務(wù)”可以從兩個(gè)方向上來(lái)理解:一是全局任務(wù)與局部任務(wù)。全局任務(wù)是相對(duì)于網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備作為一個(gè)整體而言的,其需要它的各個(gè)組成部分(比如,爬取器、解析器和輸出器等)共同協(xié)調(diào)性地完成,局部任務(wù)是相對(duì)于網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備的某個(gè)組成部分而言的,其在某個(gè)組成部分內(nèi)執(zhí)行。舉例而言,假設(shè)當(dāng)前需要從網(wǎng)絡(luò)側(cè)獲取的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)為某特定“影評(píng)”,那么對(duì)于網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備整體而言,這里獲取某特定“影評(píng)”的任務(wù)即是全局任務(wù),而全局任務(wù)是由網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備各個(gè)組成部分分工協(xié)同完成的,對(duì)于爬取器而言,其執(zhí)行爬取該特定“影評(píng)”的全局位置得到統(tǒng)一入口資源符的任務(wù),對(duì)于解析器而言,其執(zhí)行解析某特定“影評(píng)”的統(tǒng)一入口資源符得到影評(píng)數(shù)據(jù)的任務(wù),對(duì)于輸出器而言,其執(zhí)行輸出該影評(píng)數(shù)據(jù)的任務(wù),而無(wú)論是爬取器、解析器,還是輸出器,其所執(zhí)行任務(wù)均是“獲取某特定影評(píng)”這個(gè)全局任務(wù)的局部任務(wù)。二是總?cè)蝿?wù)與分任務(wù)。對(duì)于網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備而言,可能在同一個(gè)時(shí)段內(nèi)接收到對(duì)多個(gè)目標(biāo)資源進(jìn)行爬取的任務(wù),對(duì)多個(gè)目標(biāo)資源進(jìn)行爬取的任務(wù)即是總?cè)蝿?wù),在實(shí)現(xiàn)過程中,網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備可以并行執(zhí)行對(duì)各個(gè)目標(biāo)資源進(jìn)行爬取的任務(wù),這種情況下,對(duì)每個(gè)目標(biāo)資源進(jìn)行爬取的任務(wù)則構(gòu)成相對(duì)于總?cè)蝿?wù)的分任務(wù)。舉例而言,假設(shè)需要網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備獲取多個(gè)某特定的“影評(píng)”,那么由獲取這多個(gè)特定影評(píng)構(gòu)成的總體即是相對(duì)于網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備的總?cè)蝿?wù),進(jìn)而,在網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備完成某特定影評(píng)數(shù)據(jù)的獲取的任務(wù)時(shí),這一個(gè)任務(wù)即是分任務(wù)。
[0058]從上述兩個(gè)方向?qū)θ蝿?wù)的理解,既具有某種程度上的關(guān)聯(lián)性,又具有某種程度上的獨(dú)立性。對(duì)于一個(gè)總?cè)蝿?wù)而言,可以同時(shí)或者不同時(shí)啟動(dòng)多個(gè)分任務(wù)來(lái)完成,而對(duì)于一個(gè)分任務(wù)而言,相對(duì)于網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備整體則為全局任務(wù),相對(duì)于網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備的各個(gè)組成部分則為局部任務(wù),這體現(xiàn)了從兩個(gè)方向?qū)Α叭蝿?wù)”進(jìn)行理解的關(guān)聯(lián)性。對(duì)于網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備在完成某次任務(wù)過程中,如果該任務(wù)僅僅是單個(gè)的,那么它實(shí)際上并不存在總?cè)蝿?wù)、分任務(wù)之分,而僅存在全局任務(wù)和局部任務(wù)的區(qū)別,這體現(xiàn)了從兩個(gè)方向?qū)Α叭蝿?wù)”進(jìn)行理解的獨(dú)立性。在解釋清楚對(duì)任務(wù)的不同理解(或者說(shuō)不同類別劃分)后,還可以利用“子任務(wù)”的概念來(lái)說(shuō)明本發(fā)明完成網(wǎng)絡(luò)數(shù)據(jù)的獲取過程:在前述第一種理解中,局部任務(wù)可以視為子任務(wù),即網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備上的爬取器、解析器、輸出器內(nèi)部執(zhí)行的任務(wù),顯然,這種子任務(wù)可以包含多個(gè);在前述第二種理解中,分任務(wù)可以視為子任務(wù)。也就是說(shuō),子任務(wù)可以在不同層面上統(tǒng)一對(duì)任務(wù)的認(rèn)識(shí)?;诖耍绻诘谝环N理解基礎(chǔ)上認(rèn)識(shí)子任務(wù),那么無(wú)論是爬取器、解析器,還是輸出器,均可各自同時(shí)執(zhí)行多個(gè)子任務(wù);如果在第二種理解基礎(chǔ)上認(rèn)識(shí)子任務(wù),那么爬取器、解析器和輸出器作為整體可以同時(shí)執(zhí)行多個(gè)子任務(wù)。
[0059]在實(shí)際應(yīng)用過程中,子任務(wù)的概念通常與線程(進(jìn)程)等術(shù)語(yǔ)聯(lián)系起來(lái)。比如,在一些應(yīng)用場(chǎng)景中,子任務(wù)可以由線程來(lái)實(shí)現(xiàn)。這樣,爬取器所完成的對(duì)目標(biāo)資源的全局位置的爬取任務(wù)可以通過運(yùn)行多個(gè)線程來(lái)完成,為方便區(qū)別,可以將爬取器內(nèi)運(yùn)行的線程稱為第一線程(其對(duì)應(yīng)的子任務(wù)可以稱為第一子任務(wù))。同理,解析器內(nèi)也可以運(yùn)行多個(gè)線程(可以稱為第二線程,其對(duì)應(yīng)的子任務(wù)稱為第二子任務(wù))來(lái)根據(jù)得到的入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析,以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù),以及,輸出器內(nèi)也可以運(yùn)行多個(gè)線程(可以稱為第三線程,其對(duì)應(yīng)的子任務(wù)可以稱為第三子任務(wù))來(lái)對(duì)解析目標(biāo)資源得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行輸出。需要說(shuō)明的是,上述網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備的爬取器、解析器和輸出器由各個(gè)線程來(lái)執(zhí)行子任務(wù)時(shí),對(duì)這些線程還可以存在如下的要求:
[0060]一是三類線程(即第一線程、第二線程、第三線程)的數(shù)量總和應(yīng)當(dāng)小于或等于線程池內(nèi)的預(yù)設(shè)線程數(shù)量的總和,這是基于線程池的實(shí)際用途作出的要求。線程池內(nèi)的線程通常不單單用于完成網(wǎng)絡(luò)數(shù)據(jù)的獲取,還可能應(yīng)用于進(jìn)行其他工作,如果將線程池內(nèi)的線程全部用于網(wǎng)絡(luò)數(shù)據(jù)獲取過程,則可能導(dǎo)致網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備的整體癱瘓或者較大程度上影響到其他功能的實(shí)現(xiàn)。在實(shí)際應(yīng)用過程中,盡管理論上只要三類線程的數(shù)量不大于線程池內(nèi)的線程上限即可,但通常還是會(huì)根據(jù)具體情況保留一些“線程”。
[0061]二是三類線程中至少各自有一個(gè)線程可以同時(shí)啟動(dòng)。由于無(wú)論是爬取器、解析器,還是輸出器均可以工作在“多線程”模式下,如果對(duì)多個(gè)線程的工作沒有統(tǒng)一的協(xié)調(diào),將有可能出現(xiàn)很多問題。實(shí)際上,這種要求還出于對(duì)線程控制的需要,網(wǎng)絡(luò)數(shù)據(jù)爬取過程是一個(gè)連續(xù)的自動(dòng)化過程,通常開始網(wǎng)絡(luò)數(shù)據(jù)爬取工作時(shí),使第一線程、第二線程和第三線程同時(shí)啟動(dòng)可以在一次性控制中完成,而不需要對(duì)三類線程在不同時(shí)點(diǎn)上分別控制,即方便了對(duì)線程的控制。這里需要說(shuō)明的是,三類線程中至少一個(gè)線程同時(shí)啟動(dòng)并不意味著它們一定會(huì)同時(shí)工作:對(duì)于剛開始進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)爬取時(shí),通常最先工作的是爬取器的第一線程,緊接著才是解析器的第二線程、輸出器的第三線程,在爬取器的第一線程未爬取目標(biāo)資源的全局位置以獲得入口統(tǒng)一資源定位符之前,解析器的全部第二線程處于等待狀態(tài),直至爬取器的某個(gè)第一線程爬取目標(biāo)資源全局位置,得到一個(gè)入口統(tǒng)一資源定位符后,某個(gè)第二線程則處于工作狀態(tài)(這時(shí)其它的第二線程可能仍然處于等待狀態(tài)),在解析器的某個(gè)第二線程解析出目標(biāo)資源對(duì)應(yīng)的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)之前,輸出器的全部第三線程處于等待狀態(tài),直至解析器的某個(gè)第二線程解析出目標(biāo)資源對(duì)應(yīng)的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)。但是,由于爬取器、解析器和輸出器為多線程工作模式,三類線程也是可以處于同時(shí)工作狀態(tài)的,比如,就獲取網(wǎng)絡(luò)數(shù)據(jù)的整個(gè)過程中的某個(gè)時(shí)點(diǎn)而言,爬取器的某個(gè)第一線程、解析器的某個(gè)第二線程以及輸出器的某個(gè)第三線程均處于工作狀態(tài),只不過它們各自工作的內(nèi)容不同。
[0062]在前述示例性網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備中,通過爬取器、解析器和輸出器的工作可以實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)數(shù)據(jù)的獲取。但是,在上述設(shè)備的另一些應(yīng)用場(chǎng)景中,可能還存在其他組成部分以改進(jìn)網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備,使其具有更強(qiáng)的功能或更好的技術(shù)效果。下面結(jié)合附圖3作一些示例性介紹:
[0063]在一些應(yīng)用場(chǎng)景中,網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備22可以包括阻塞隊(duì)列,阻塞隊(duì)列設(shè)置的方式可以包括如下兩種典型性方式:一種是將阻塞隊(duì)列設(shè)置在爬取器與解析器之間,這樣爬取器可以將對(duì)目標(biāo)資源的全局位置進(jìn)行爬取得到的入口統(tǒng)一資源定位符放置在該阻塞隊(duì)列中,以便解析器可以直接從阻塞隊(duì)列中讀取相應(yīng)信息進(jìn)行解析;另一種是將阻塞隊(duì)列設(shè)置在解析器與輸出器之間,這樣解析器可以將對(duì)爬取的結(jié)果進(jìn)行解析得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)放置在阻塞隊(duì)列之中,以便輸出器直接從阻塞隊(duì)列中讀取相應(yīng)信息進(jìn)行輸出。當(dāng)然,在實(shí)際應(yīng)用過程中,網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備可以結(jié)合上述做法,同時(shí)設(shè)置兩個(gè)阻塞隊(duì)列,即第一阻塞隊(duì)列31和第二阻塞隊(duì)列32,第一阻塞隊(duì)列31設(shè)置在爬取器和解析器之間,用于放置爬取器對(duì)目標(biāo)資源的全局位置進(jìn)行爬取得到的入口統(tǒng)一資源定位符,第二阻塞隊(duì)列32設(shè)置在解析器和輸出器之間,用于放置解析器根據(jù)目標(biāo)資源的入口統(tǒng)一資源定位符和頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)。由于第一阻塞隊(duì)列31的存在,解析器可以從第一阻塞隊(duì)列中讀取入口統(tǒng)一資源定位符進(jìn)行解析,而不用直接與爬取器發(fā)生接口關(guān)系,這樣實(shí)際上起到了對(duì)爬取器和解析器的“解耦”,使得爬取器和解析器的工作具有一定的獨(dú)立性,比如,可以根據(jù)具體情況分別控制爬取器的爬取速度和解析器的解析速度,在爬取器爬取入口統(tǒng)一資源定位符的速度較快時(shí),基于第一阻塞隊(duì)列的緩沖,解析器即使不立即調(diào)整速度以適應(yīng)爬取器,也不會(huì)發(fā)生整個(gè)爬取過程中斷或爬取的入口統(tǒng)一資源定位符溢出的現(xiàn)象。類似地,第二阻塞隊(duì)列32可以在解析器和輸出器之間起到上述相同的作用。
[0064]在上述增加第一阻塞隊(duì)列和第二阻塞隊(duì)列的情況下,本發(fā)明的另一些應(yīng)用場(chǎng)景可能會(huì)進(jìn)一步利用第一阻塞隊(duì)列和第二阻塞隊(duì)列,使得整個(gè)爬取過程的協(xié)同性更強(qiáng)。比如,一種利用方式是在爬取器的第一子任務(wù)執(zhí)行結(jié)束后,對(duì)該第一子任務(wù)執(zhí)行完畢得到的入口統(tǒng)一資源定位符設(shè)置第一結(jié)束標(biāo)簽,然后放入到第一阻塞隊(duì)列之中,這樣,解析器執(zhí)行第二子任務(wù)時(shí)從第一阻塞隊(duì)列中讀取到相應(yīng)的標(biāo)簽,便可以結(jié)束工作,這種方式實(shí)現(xiàn)了爬取器對(duì)解析器工作的控制。同理,在解析器的第二子任務(wù)執(zhí)行結(jié)束后,對(duì)該第二子任務(wù)解析得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)設(shè)置第二結(jié)束標(biāo)簽,這樣輸出器執(zhí)行第三子任務(wù)讀取到第二結(jié)束標(biāo)簽時(shí)結(jié)束工作,實(shí)現(xiàn)了解析器對(duì)輸出器工作的控制。需要說(shuō)明的是,這里可以是在某一個(gè)第一子任務(wù)、第二子任務(wù)執(zhí)行結(jié)束后設(shè)置相應(yīng)的標(biāo)簽,也可以是在全部的第一子任務(wù)、第二子任務(wù)工作結(jié)束后設(shè)置標(biāo)簽,在實(shí)際應(yīng)用過程中更多地選擇后者。此外,還需要說(shuō)明結(jié)束標(biāo)簽的數(shù)量,在全部的第一子任務(wù)、第二子任務(wù)工作結(jié)束后設(shè)置標(biāo)簽的情況下,爬取器(解析器)設(shè)置的結(jié)束標(biāo)簽的數(shù)量可以與解析器(輸出器)中的子任務(wù)的數(shù)量相同或要大,在某一個(gè)第一子任務(wù)、第二子任務(wù)執(zhí)行結(jié)束后設(shè)置相應(yīng)的標(biāo)簽的情況下,設(shè)置的結(jié)束標(biāo)簽的數(shù)量等于爬取器或解析器內(nèi)的子任務(wù)的數(shù)量。[0065]在另一些應(yīng)用場(chǎng)景中,網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備22可以包括監(jiān)控器。這主要是針對(duì)現(xiàn)實(shí)應(yīng)用過程中目標(biāo)資源所在的網(wǎng)站或網(wǎng)頁(yè)出現(xiàn)改版、搭建不規(guī)范等可能導(dǎo)致頁(yè)面的DOM結(jié)構(gòu)發(fā)生變化的情況,這種情況下,如果采取原有的爬取方式,可能使得爬取的數(shù)據(jù)出現(xiàn)錯(cuò)誤,或者根本不能爬取。為了及早發(fā)現(xiàn)這些問題,并相應(yīng)地調(diào)整爬取策略,設(shè)置監(jiān)控器對(duì)爬取的整個(gè)過程進(jìn)行監(jiān)控,一旦發(fā)現(xiàn)爬取異常,則發(fā)送報(bào)警信息。報(bào)警信息可以根據(jù)對(duì)整個(gè)爬取過程的影響程度進(jìn)行級(jí)別劃分,比如,可以將報(bào)警信息劃分為可忽略的報(bào)警、輕微報(bào)警、中等警告、高級(jí)別的警告和嚴(yán)重的警告。由于報(bào)警信息具有的級(jí)別性,有些信息雖然對(duì)網(wǎng)絡(luò)數(shù)據(jù)的爬取存在影響,但并無(wú)過大妨礙,因此,在實(shí)際應(yīng)用過程中,并不需要對(duì)這些所有的信息進(jìn)行捕捉,并作出真實(shí)的“報(bào)警”。為節(jié)約信息處理資源,可以僅捕捉那些較為嚴(yán)重的報(bào)警信息,然后及時(shí)發(fā)出報(bào)警通知,以便進(jìn)行及時(shí)處理。具體報(bào)警通知的方式可以為按照預(yù)先設(shè)定的郵件地址,發(fā)送給相應(yīng)的用戶。
[0066]在又一種應(yīng)用場(chǎng)景中,網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備22可以包括預(yù)處理器,該預(yù)處理器可以連接在解析器與輸出器之間。當(dāng)解析器與輸出器之間具有第二阻塞隊(duì)列的情況下,預(yù)處理器可以位于第二阻塞隊(duì)列和輸出器之間。預(yù)處理器可以用于完成多種預(yù)處理,比如,一種方式是在解析器解析得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)中包括眾多不合法字符的情況下,對(duì)這些不合法字符進(jìn)行去除操作。
[0067]在再一種應(yīng)用場(chǎng)景中,網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備22還可以包括緩存器,用于在爬取器爬取目標(biāo)資源的全局位置后對(duì)目標(biāo)資源所在的頁(yè)面進(jìn)行緩存。對(duì)網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備的這種改進(jìn),可以在實(shí)際應(yīng)用過程中應(yīng)對(duì)一些突發(fā)情況,比如,爬取過程出現(xiàn)錯(cuò)誤或斷網(wǎng)被迫中斷,當(dāng)恢復(fù)爬取后,則可以從緩存的頁(yè)面之后接著爬取,而不需要從“頭”開始,從而節(jié)約了爬取時(shí)間。在緩存時(shí),較優(yōu)選的方式是采用本地硬盤緩存,其原因在于本地存儲(chǔ)設(shè)備比網(wǎng)盤等網(wǎng)絡(luò)存儲(chǔ)設(shè)備通信速度要快、比內(nèi)存等資源緊張的設(shè)備更為優(yōu)惠。此外,在設(shè)置了本地硬盤緩存機(jī)制的情況下,還可以加入時(shí)效控制策略等措施,使緩存的功能得到最大程度的發(fā)揮。_8] 示例性方法
[0069]下面結(jié)合圖3的應(yīng)用場(chǎng)景,參考圖4來(lái)描述根據(jù)本發(fā)明示例性的網(wǎng)絡(luò)數(shù)據(jù)獲取方法的實(shí)施。需要注意的是,上述應(yīng)用場(chǎng)景僅是為了便于理解本發(fā)明的精神和原理而示出,本發(fā)明的實(shí)施方式在此方面不受任何限制。相反,本發(fā)明的實(shí)施方式可以應(yīng)用于其他可以適用的任何場(chǎng)景。
[0070]根據(jù)圖4示出的本發(fā)明的一個(gè)示例性的網(wǎng)絡(luò)數(shù)據(jù)獲取方法實(shí)施例,網(wǎng)絡(luò)數(shù)據(jù)獲取方法包括如下步驟:
[0071]S41:對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取,以得到入口統(tǒng)一資源定位符;
[0072]網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置指示了目標(biāo)資源所在的全局路徑,要獲取目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)需要先爬取全局位置,以得到入口統(tǒng)一資源定位符。
[0073]S42:根據(jù)得到的入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析,以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù);
[0074]通過前述步驟得到入口統(tǒng)一資源的定位符后,需要借助目標(biāo)資源所在頁(yè)面的頁(yè)面模板來(lái)確定目標(biāo)資源的具體位置。全局位置與頁(yè)面模板的總和才明確地指示出了目標(biāo)資源所在,這里將全局位置與頁(yè)面模板結(jié)合起來(lái)使用可以至少避免兩方面的問題:一是避免準(zhǔn)確性過低?,F(xiàn)有的一種網(wǎng)絡(luò)數(shù)據(jù)獲取方式在確定了全局位置后,只要在該全局位置上滿足一定條件的所有內(nèi)容均會(huì)作為解析的對(duì)象,但這些解析得到的對(duì)象可能并不是用戶真正需要的內(nèi)容,使得獲取的網(wǎng)絡(luò)數(shù)據(jù)與用戶的需求不匹配,準(zhǔn)確性降低。而本發(fā)明可以通過全局位置和頁(yè)面模板的結(jié)合精確指示目標(biāo)資源的位置,從而有利于精確解析,提高獲取的網(wǎng)絡(luò)數(shù)據(jù)的準(zhǔn)確度。二是避免配置任務(wù)過于繁重。在全局位置相同的情況下,針對(duì)不同的解析任務(wù),不必針對(duì)一個(gè)任務(wù)進(jìn)行一個(gè)獨(dú)特爬取配置,而只需要進(jìn)行解析配置,從而減少了代碼量,增強(qiáng)了適應(yīng)能力。
[0075]S43:對(duì)解析目標(biāo)資源得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行輸出。[0076]需要說(shuō)明的是,在上述實(shí)施例的三個(gè)步驟中,雖然文字表現(xiàn)上前后順序相承,但這并不說(shuō)明本發(fā)明在實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)獲取過程中這三個(gè)步驟僅能依從這種先后順序。實(shí)際上,S41~S43可以同時(shí)啟動(dòng),如果各個(gè)步驟分別由不同的子任務(wù)來(lái)實(shí)現(xiàn),那么如下兩種情況均是可能的:一是前一個(gè)步驟的某個(gè)(些)子任務(wù)較后一個(gè)步驟的某個(gè)(些)子任務(wù)先執(zhí)行。比如,一些應(yīng)用場(chǎng)景下,S4US42步驟均分別由多個(gè)子任務(wù)來(lái)完成(S41步驟對(duì)應(yīng)的子任務(wù)稱為第一子任務(wù),S42步驟對(duì)應(yīng)的子任務(wù)稱為第二子任務(wù)),這樣,可以是所有第一子任務(wù)均執(zhí)行完畢后才開始執(zhí)行第二子任務(wù)。二是前一個(gè)步驟的某個(gè)(些)子任務(wù)與后一個(gè)步驟的某個(gè)(些)子任務(wù)同時(shí)執(zhí)行,或者前一個(gè)步驟的某個(gè)(些)子任務(wù)的甚至比后一個(gè)步驟的某個(gè)(些)子任務(wù)的執(zhí)行還要晚。以前述例子為例,多個(gè)第一子任務(wù)中某個(gè)子任務(wù)可能與多個(gè)第二子任務(wù)中的某個(gè)子任務(wù)同時(shí)執(zhí)行,或者多個(gè)第一子任務(wù)中某個(gè)子任務(wù)的執(zhí)行可能比多個(gè)第二子任務(wù)中的某個(gè)子任務(wù)的執(zhí)行還要晚。實(shí)際應(yīng)用過程中,這兩種執(zhí)行模式可以同時(shí)出現(xiàn)在完成一次網(wǎng)絡(luò)數(shù)據(jù)的獲取過程中。比如,在網(wǎng)絡(luò)數(shù)據(jù)獲取過程中采用阻塞隊(duì)列機(jī)制的情形下將出現(xiàn)上述兩種情形的混合。具體而言,當(dāng)在S41步驟與S42步驟之間存在一個(gè)阻塞隊(duì)列(第一阻塞隊(duì)列)、S42步驟與S43步驟之間存在另一個(gè)阻塞隊(duì)列(第二阻塞隊(duì)列)時(shí),三個(gè)步驟之間可以完全“解耦”,即S41步驟對(duì)應(yīng)的子任務(wù)在源源不斷地將爬取目標(biāo)資源的全局位置得到的入口統(tǒng)一資源定位符放置于第一阻塞隊(duì)列,S42步驟對(duì)應(yīng)的子任務(wù)則源源不斷在從該第一阻塞隊(duì)列中讀取入口統(tǒng)一資源定位符用于解析。那么,剛開始時(shí),由于第一阻塞隊(duì)列為空,這時(shí)必然是S41步驟對(duì)應(yīng)的某個(gè)子任務(wù)先執(zhí)行,然后,S42步驟對(duì)應(yīng)的某個(gè)子任務(wù)再執(zhí)行,當(dāng)執(zhí)行一段時(shí)間后或者S42步驟執(zhí)行的速度慢于S41步驟時(shí),S42步驟對(duì)應(yīng)的某個(gè)子任務(wù)將可能與S41步驟對(duì)應(yīng)的某個(gè)子任務(wù)處于相同工作時(shí)段內(nèi),即同時(shí)工作。
[0077]在本示例性方法中,可以對(duì)目標(biāo)資源的爬取和解析等過程設(shè)置各種條件,以便控制相關(guān)過程。比如,設(shè)置一個(gè)控制條件用于控制爬取器和解析器的啟動(dòng)或停止,或者控制爬取器和解析器對(duì)目標(biāo)資源進(jìn)行爬取和解析的時(shí)間間隔,以防止出現(xiàn)無(wú)“節(jié)操”爬取和解析等。還比如,可以同時(shí)設(shè)置篩選條件來(lái)控制爬取、解析的深度。在實(shí)際應(yīng)用過程中,某個(gè)站點(diǎn)的數(shù)據(jù)量相當(dāng)大,但會(huì)限制展現(xiàn)數(shù)據(jù)的頁(yè)面數(shù)量,這種情況下即需要不斷地觸發(fā)篩選條件,由入口統(tǒng)一資源定位符指向的頁(yè)面不斷深入到該頁(yè)面的子頁(yè)面、子頁(yè)面的再下一次的子頁(yè)面….直到預(yù)設(shè)的相關(guān)條件所指明的某個(gè)層級(jí)的子頁(yè)面為止,才進(jìn)行具體的解析操作。
[0078]在上述示例性實(shí)施方法基礎(chǔ)之上,基于實(shí)際應(yīng)用過程中的具體問題,可以對(duì)上述示例性方法進(jìn)行各種改進(jìn),以滿足各種場(chǎng)景下的具體需要。下面示例性地給出了幾種情況,本領(lǐng)域技術(shù)人員可以在不脫離本發(fā)明的核心基礎(chǔ)上進(jìn)行類似的擴(kuò)展,這些擴(kuò)展后的方案均在本發(fā)明的保護(hù)范圍內(nèi)。[0079]示例性情況之一:在實(shí)施本發(fā)明的獲取網(wǎng)絡(luò)數(shù)據(jù)的方法過程中,可能面臨這樣一個(gè)問題:目標(biāo)資源并非是具有單一屬性的數(shù)據(jù),而是具有多種屬性的數(shù)據(jù),其中不同屬性具有不同類別的數(shù)據(jù)。比如,當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)獲取任務(wù)為獲取“影評(píng)”數(shù)據(jù),通常“影評(píng)”這一目標(biāo)資源可能存在“影評(píng)名”、“影評(píng)內(nèi)容”、“影評(píng)時(shí)間”、“影評(píng)人聯(lián)系方式”等屬性,不同屬性對(duì)應(yīng)的數(shù)據(jù)的結(jié)構(gòu)、類型完全不同,這種情況下,如果不作任何區(qū)分,將可能使獲取到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)混雜不堪,沒有實(shí)際價(jià)值。為此,需要依據(jù)目標(biāo)資源的屬性進(jìn)行解析,以得到屬性對(duì)應(yīng)的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)。
[0080]示例性情況之二:通過前述提及的全局位置和相對(duì)位置能夠確定目標(biāo)資源的具體位置,進(jìn)而對(duì)該具體位置進(jìn)行解析得到需要的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)。但是,在某些應(yīng)用場(chǎng)景中,用戶可能僅僅需要獲取到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)中的某一部分而不是全部。以前述的目標(biāo)資源具有多屬性的情況為例,用戶可能僅僅需要某個(gè)影評(píng)人聯(lián)系方式中的區(qū)號(hào)信息,這種情況下,可以利用正則表達(dá)式對(duì)所述屬性對(duì)應(yīng)的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行萃取,以獲得所需要的數(shù)據(jù)。
[0081]示例性情況之三:對(duì)網(wǎng)絡(luò)側(cè)數(shù)據(jù)的獲取過程是繁雜的工作,如果目標(biāo)資源存在周期性更新,那么對(duì)目標(biāo)資源網(wǎng)絡(luò)數(shù)據(jù)的爬取和解析過程也需要周期性的進(jìn)行,以確保獲取到的數(shù)據(jù)是最新最及時(shí)的數(shù)據(jù)。但在這種情況下,需要以相同的IP地址頻繁對(duì)目標(biāo)資源所在的網(wǎng)站服務(wù)器進(jìn)行訪問,該行為一旦被目標(biāo)資源所在的網(wǎng)站服務(wù)器監(jiān)控到,將可能拒絕對(duì)其訪問,屏蔽掉該IP地址。IP地址屏蔽將無(wú)法獲取目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)。為應(yīng)對(duì)這種情況,可以在對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取之前,獲取IP代理列表,選擇該IP代理列表中的一個(gè)可用IP;將當(dāng)前IP變換為所述可用IP,通過所述可用IP對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取。這種代理機(jī)制可以設(shè)置為自動(dòng)運(yùn)行模式,根據(jù)實(shí)際情況刪除不可用代理、選擇可用代理,實(shí)現(xiàn)代理的自動(dòng)管理。與這種情況具有類似性質(zhì)的一種情形是為防止“無(wú)節(jié)操”爬取,可以控制對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取的頻率或爬取間隔,和/或爬取速度。
[0082]示例性情況之四:在某些目標(biāo)網(wǎng)站中,需要進(jìn)行登錄后才能對(duì)目標(biāo)網(wǎng)站進(jìn)行訪問,而登錄時(shí)可能會(huì)要求輸入驗(yàn)證碼,驗(yàn)證碼通常以圖片形式給出。在網(wǎng)絡(luò)數(shù)據(jù)獲取過程中,如果不能突破該驗(yàn)證碼的驗(yàn)證關(guān)將無(wú)法訪問到目標(biāo)頁(yè),也就無(wú)法獲取需要的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)。這種情況下,可以采取如下措施:在對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取之前,如果需要進(jìn)行圖片驗(yàn)證以獲得對(duì)目標(biāo)資源的訪問,則先對(duì)所述圖片進(jìn)行切割,將切割后的各個(gè)部分與預(yù)設(shè)訓(xùn)練集進(jìn)行匹配以確定各個(gè)部分對(duì)應(yīng)的內(nèi)容,利用所述各個(gè)部分的內(nèi)容實(shí)現(xiàn)對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的訪問。
[0083]為了實(shí)現(xiàn)上述網(wǎng)絡(luò)數(shù)據(jù)獲取過程,本發(fā)明的另一個(gè)實(shí)施例可以先進(jìn)行文件配置,包括目標(biāo)文件、條件文件和任務(wù)文件的配置,分別介紹如下:
[0084]目標(biāo)文件的配置用于指明待獲取的位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置,以及所述目標(biāo)資源所在頁(yè)面的頁(yè)面模板。假設(shè)現(xiàn)在需要獲取豆瓣網(wǎng)上的影評(píng)數(shù)據(jù),由于豆瓣影評(píng)的一個(gè)頁(yè)面(比如頁(yè)面:http://movie.douban.com/review/best/)有一個(gè)影評(píng)列表,一個(gè)影評(píng)列表中有10個(gè)影評(píng),那么全局位置可以為每頁(yè)影評(píng)列表所在的統(tǒng)一資源定位符,如前述的http: //movie, douban.com/review/best/。此外,在該目標(biāo)文件中,還配置有統(tǒng)一資源定位符所確定的頁(yè)面的頁(yè)面模板,在具體實(shí)現(xiàn)時(shí),可以用XML路徑語(yǔ)言(XML Path Language)來(lái)編寫頁(yè)面模板中各個(gè)元素的位置,通過頁(yè)面元素的位置即可在解析時(shí)獲得頁(yè)面元素和頁(yè)面元素的數(shù)據(jù)。比如,針對(duì)前述的例子,可以通過如下的頁(yè)面模板配置來(lái)指明各個(gè)影評(píng)(的各個(gè)屬性)的位置:
[0085]〈Attribute attr = " author " name ="作者"xpath = " //span[iclass=’ starb,]/a[l]"
〈Attribute attr = " movie " name ="電影名"xpath = " //span[iclass=’ starb,]/a[2]"
〈Attribute attr = " star " name ="評(píng)論星級(jí)"xpath = " //span[iclass=,plllobss, ]/span[2]/@class "
〈Attribute attr = " date " name ="評(píng)論日期"xpath = " //ul [iclass=,remark,]/li [l]/span/ititle "
[0086]如上配置中的“xpath”用于指明影評(píng)的某個(gè)屬性(如作者,電影名、評(píng)論星級(jí)、評(píng)論日期等)的具體位置,在進(jìn)行解析時(shí),即可根據(jù)該xpath指明的位置獲得相應(yīng)的影評(píng)數(shù)據(jù)。
[0087]所述任務(wù)文件指明對(duì)網(wǎng)絡(luò)側(cè)目標(biāo)資源的全局位置進(jìn)行爬取以得到入口統(tǒng)一資源定位符的操作、根據(jù)得到的入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)的操作、對(duì)解析目標(biāo)資源得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行輸出的操作對(duì)應(yīng)的任務(wù)。如果上述操作通過線程來(lái)實(shí)現(xiàn),則對(duì)整個(gè)過程的配置可以體現(xiàn)為對(duì)線程的配置。比如,任務(wù)文件的一種示例性配置可以包括:
[0088](I)線程相關(guān)配置:
[0089]設(shè)置crawlerThreadNum用于配置爬取的線程數(shù);
[0090]設(shè)置parserThreadNum用于設(shè)置解析的線程數(shù);
[0091]設(shè)置handleThreadNum用于設(shè)置輸出的線程數(shù);
[0092]優(yōu)選地,還可以用于設(shè)置預(yù)處理的線程數(shù),其主要用于對(duì)解析器解析得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行預(yù)處理;
[0093](2)爬取相關(guān)配置,其中:
[0094]設(shè)置Encode用于配置目標(biāo)網(wǎng)站的編碼格式,默認(rèn)為utf_8;
[0095]設(shè)置needProxy用于配置是否需要使用代理,默認(rèn)為false (不需要);
[0096]設(shè)置restLevel用于配置各次任務(wù)的間隔時(shí)間;
[0097]設(shè)置httpMethod用于配置爬取器獲取網(wǎng)頁(yè)的請(qǐng)求方式;
[0098]設(shè)置diskCache用于配置是否需要進(jìn)行硬盤緩存,默認(rèn)為false ;
[0099]設(shè)置diskCacheOutTimeSecond用于配置硬盤緩存的失效時(shí)間,單位為秒,0表示永遠(yuǎn)都不失效;
[0100]設(shè)置pageCheckSwitch用于配置是否需要對(duì)爬取的頁(yè)面進(jìn)行檢查,默認(rèn)為false ;
[0101]設(shè)置PageCheckRegex和上一個(gè)配置配合,是頁(yè)面檢查的正則表達(dá)式,為空表示不進(jìn)行檢查。
[0102](3)解析相關(guān)配置:
[0103]設(shè)置modelName用于配置目標(biāo)文件的文件名;
[0104]設(shè)置crawlConditionName用于配置條件文件的文件名。
[0105](4)輸出相關(guān)配置,可以配置為console, excel, oracle, mysql四種中的任何一種,其中:oracle和mysql不能同時(shí)寫,console表示打印到屏幕;excel表示打印到excel。[0106]優(yōu)選地,還可以在任務(wù)文件中對(duì)報(bào)警信息處理配置,比如:
[0107]設(shè)置mailTo用于設(shè)置報(bào)警信息接收郵件列表;
[0108]設(shè)置maxMail用于設(shè)置每次任務(wù)發(fā)送的報(bào)警信息郵件上限,設(shè)置為O時(shí)沒有上限,支持重復(fù)報(bào)警過濾;
[0109]所述條件文件指明過程中的各種控制。這里的條件可以具體體現(xiàn)為比如按照如下
方式配置的篩選條件和控制條件:
[0110]
<!—篩選條件—>
<Filter-Conditions>
<!—篩選條件1-->
〈Condition xpath="http://div[@.class='shop_main_select']/ul[@class-box']/li[l]/7a/@href' name="分類"index=”l” depth="2"></Condition>
<!—篩選條件2-->
〈Condition xpath=”//ul[@class='navBlock navTab-cont navTab-cont-on']//a/@href name=” 區(qū)域” index=" I" depth="2"></Condition></Filter-Conditions>
<!--控制條件-->
<Begin-Crawl-Conditons>
<!--控制條件之間的關(guān)系-->
<Begin-Cravvl-Conditions-Relation>
1&&2
</Begin-Cravvl-Conditions-Relation>
<!--控制條件1-->
<Begin-Crawl-Conditon index=" I" type="Integer" xpath="/./a[@class='PageLink'][last()]/@title" comparator="<" goal="50" canBeNull="true"></Begin-Craw1-Conditon>
</Begin-Crawl-Conditons>
<!__下一頁(yè)的xpatli,從第一條件直到最后條件找到滿足的為止-->
<Ncxt-Pagcs>
<Next-Page xpath="http://a[@class-NextPage']/@href'></Next-Page>
</Next-Pages>
[0111]按照前述方式配置完成后,則可以讀取并運(yùn)行配置文件,以執(zhí)行對(duì)網(wǎng)絡(luò)側(cè)目標(biāo)資源的全局位置進(jìn)行爬取以得到入口統(tǒng)一資源定位符的操作,根據(jù)所述入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)的操作,以及對(duì)所述目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行輸出的操作,從而實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)獲取。
[0112]應(yīng)當(dāng)注意,盡管在上文詳細(xì)描述中提及了網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備的若干裝置,但是這種劃分并非強(qiáng)制性的。實(shí)際上,根據(jù)本發(fā)明的實(shí)施方式,上文描述的兩個(gè)或更多裝置的特征和功能可以在一個(gè)裝置中具體化。并且,相反地,上文描述的一個(gè)裝置的特征和功能可以進(jìn)一步劃分為由多個(gè)裝置來(lái)具體化。
[0113]此外,盡管在附圖中以特定順序描述了本發(fā)明方法的操作,但是,這并非要求或者暗示必須按照該特定順序來(lái)執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實(shí)現(xiàn)期望的結(jié)果。附加地或備選地,可以省略某些步驟,將多個(gè)步驟合并為一個(gè)步驟執(zhí)行,和/或?qū)⒁粋€(gè)步驟分解為多個(gè)步驟執(zhí)行。
[0114]雖然已經(jīng)參考若干【具體實(shí)施方式】描述了本發(fā)明的精神和原理,但是應(yīng)該理解,本發(fā)明并不限于所公開的【具體實(shí)施方式】,對(duì)各方面的劃分也不意味著這些方面中的特征不能組合以進(jìn)行受益,這種劃分僅是為了表述的方便。本發(fā)明旨在涵蓋所附權(quán)利要求的精神和范圍內(nèi)所包括的各種修改和等同布置。
【權(quán)利要求】
1.一種網(wǎng)絡(luò)數(shù)據(jù)獲取設(shè)備,包括: 爬取器,用于對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取,以得到入口統(tǒng)一資源定位符; 解析器,用于根據(jù)得到的入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析,以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù);以及, 輸出器,用于對(duì)解析目標(biāo)資源得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行輸出。
2.根據(jù)權(quán)利要求1所述的設(shè)備,其中,所述爬取器、解析器、輸出器同時(shí)啟動(dòng),所述爬取器、解析器、輸出器具備同時(shí)執(zhí)行多個(gè)子任務(wù)的能力。
3.根據(jù)權(quán)利要求2所述的設(shè)備,還包括第一阻塞隊(duì)列和第二阻塞隊(duì)列,其中, 所述爬取器將對(duì)目標(biāo)資源的全局位置進(jìn)行爬取得到的入口統(tǒng)一資源定位符放置于所述第一阻塞隊(duì)列,以便所述解析器從所述第一阻塞隊(duì)列中讀取所述入口統(tǒng)一資源定位符進(jìn)行解析; 所述解析器將根據(jù)所述入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析而得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)放置于所述第二阻塞隊(duì)列,以便所述輸出器從所述第二阻塞隊(duì)列中讀取所述目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行輸出。
4.根據(jù)權(quán)利要求2所述的設(shè)備,其中,所述爬取器、解析器、輸出器各自具有多個(gè)子任 務(wù), 所述爬取器,還用于在其所有子任務(wù)執(zhí)行結(jié)束后,在第一阻塞隊(duì)列設(shè)置和所述解析器子任務(wù)數(shù)相同數(shù)量的第一結(jié)束標(biāo)簽,以便解析器的每一個(gè)子任務(wù)讀取到第一阻塞隊(duì)列中的一個(gè)結(jié)束標(biāo)簽后,結(jié)束相應(yīng)子任務(wù); 所述解析器,還用于在其所有子任務(wù)執(zhí)行結(jié)束后,在第二阻塞隊(duì)列設(shè)置和所述輸出器子任務(wù)數(shù)相同數(shù)量的第二結(jié)束標(biāo)簽,以便輸出器的每一個(gè)子任務(wù)讀取到第二阻塞隊(duì)列中的一個(gè)結(jié)束標(biāo)簽后,結(jié)束相應(yīng)子任務(wù)。
5.根據(jù)權(quán)利要求1至4中任何一項(xiàng)所述的設(shè)備,還包括監(jiān)控器,用于對(duì)網(wǎng)絡(luò)數(shù)據(jù)獲取異常進(jìn)行監(jiān)控,根據(jù)監(jiān)控結(jié)果生成報(bào)警信息,并向預(yù)設(shè)用戶發(fā)送報(bào)警信息,所述網(wǎng)絡(luò)數(shù)據(jù)獲取異常至少包括目標(biāo)資源所在頁(yè)面的DOM結(jié)構(gòu)發(fā)生變化導(dǎo)致的異常。
6.根據(jù)權(quán)利要求1至4中任何一項(xiàng)所述的設(shè)備,還包括連接在解析器與輸出器之間的預(yù)處理器,用于對(duì)解析器解析得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行預(yù)處理。
7.根據(jù)權(quán)利要求6所述的設(shè)備,還包括緩存器,用于在爬取器爬取目標(biāo)資源的全局位置后對(duì)目標(biāo)資源所在的頁(yè)面進(jìn)行緩存。
8.—種網(wǎng)絡(luò)數(shù)據(jù)獲取方法,包括: 對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取,以得到入口統(tǒng)一資源定位符; 根據(jù)得到的入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析,以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù); 對(duì)解析目標(biāo)資源得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行輸出。
9.根據(jù)權(quán)利要求8所述的方法,其中,對(duì)目標(biāo)資源的全局位置進(jìn)行爬取的步驟、對(duì)目標(biāo)資源進(jìn)行解析的步驟以及對(duì)目標(biāo)數(shù)據(jù)進(jìn)行輸出的步驟同時(shí)啟動(dòng),且所述步驟能夠通過同時(shí)執(zhí)行多個(gè)子任務(wù)實(shí)現(xiàn)。
10.根據(jù)權(quán)利要求8所述的方法,其中,根據(jù)得到的入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析,以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)包括: 由目標(biāo)資源所在頁(yè)面的頁(yè)面模板確定目標(biāo)資源相對(duì)于所述全局位置的相對(duì)位置; 對(duì)根據(jù)所述全局位置和相對(duì)位置確定的目標(biāo)資源按照預(yù)設(shè)條件進(jìn)行解析,以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)。
11.根據(jù)權(quán)利要求10所述的方法,其中,所述預(yù)設(shè)條件包括用于從目標(biāo)資源所在的頁(yè)面開始篩選直至定位到所述目標(biāo)資源的預(yù)設(shè)篩選條件,和/或,用于對(duì)解析目標(biāo)資源進(jìn)行啟動(dòng)或停止控制的預(yù)設(shè)控制條件; 對(duì)目標(biāo)資源按照預(yù)設(shè)條件進(jìn)行解析以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)具體為對(duì)目標(biāo)資源按照所述預(yù)設(shè)篩選條件和預(yù)設(shè)控制條件進(jìn)行解析以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)。
12.根據(jù)權(quán)利要求10所述的方法,其中,所述目標(biāo)資源具有至少一個(gè)屬性; 對(duì)目標(biāo)資源按照預(yù)設(shè)條件進(jìn)行解析以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)具體為對(duì)目標(biāo)資源的屬性進(jìn)行解析以得到該屬性對(duì)應(yīng)的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)。
13.根據(jù)權(quán)利要求12所述的方法,還包括: 利用正則表達(dá)式對(duì)所述屬性對(duì)應(yīng)的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行萃取,以獲得所需要的數(shù)據(jù)。
14.根據(jù)權(quán)利要求8所述的方法,還包括: 在對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取之前,獲取IP代理列表,選擇該IP代理列表中的一個(gè)可用IP作為代理IP,從而在隱藏當(dāng)前IP的情況下對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取。
15.根據(jù)權(quán)利要求8所述的方法,在對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取之前,如果需要進(jìn)行圖片驗(yàn)證以獲得對(duì)目標(biāo)資源的訪問的情況下,所述方法還包括: 對(duì)所述圖片進(jìn)行切割,將切割后的各個(gè)部分與預(yù)設(shè)訓(xùn)練集進(jìn)行匹配以確定各個(gè)部分對(duì)應(yīng)的內(nèi)容,利用所述各個(gè)部分的內(nèi)容實(shí)現(xiàn)對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的訪問。
16.根據(jù)權(quán)利要求8所述的方法,還包括: 控制對(duì)位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置進(jìn)行爬取的頻率或爬取間隔,和/或爬取速度。
17.一種實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)獲取過程的方法,包括: 配置目標(biāo)文件、條件文件和任務(wù)文件,使所述目標(biāo)文件指明待獲取的位于網(wǎng)絡(luò)側(cè)的目標(biāo)資源的全局位置,以及所述目標(biāo)資源所在頁(yè)面的頁(yè)面模板,所述任務(wù)文件指明對(duì)網(wǎng)絡(luò)側(cè)目標(biāo)資源的全局位置進(jìn)行爬取以得到入口統(tǒng)一資源定位符的操作、根據(jù)得到的入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)的操作、對(duì)解析目標(biāo)資源得到的目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行輸出的操作對(duì)應(yīng)的任務(wù),所述條件文件指明過程中的各種控制; 讀取并運(yùn)行配置文件,以執(zhí)行對(duì)網(wǎng)絡(luò)側(cè)目標(biāo)資源的全局位置進(jìn)行爬取以得到入口統(tǒng)一資源定位符的操作,根據(jù)所述入口統(tǒng)一資源定位符和目標(biāo)資源所在頁(yè)面的頁(yè)面模板對(duì)目標(biāo)資源進(jìn)行解析以得到目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)的操作,以及對(duì)所述目標(biāo)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行輸出的操作,從而實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)獲取。
【文檔編號(hào)】G06F17/30GK103942309SQ201410158189
【公開日】2014年7月23日 申請(qǐng)日期:2014年4月18日 優(yōu)先權(quán)日:2014年4月18日
【發(fā)明者】黃武漢, 呂振宇 申請(qǐng)人:樂得科技有限公司