本申請涉及網(wǎng)絡(luò)領(lǐng)域,特別涉及一種數(shù)據(jù)獲取方法和裝置。
背景技術(shù):
通常,在使用網(wǎng)絡(luò)爬蟲程序獲取數(shù)據(jù)的過程中,會由于網(wǎng)絡(luò)故障、網(wǎng)站暫時癱瘓以及的URL(Uniform Resource Locator,統(tǒng)一資源定位符)失效等情況而導(dǎo)致的數(shù)據(jù)無法獲取的情況,使得需要提供一種數(shù)據(jù)獲取方法,實現(xiàn)在網(wǎng)絡(luò)故障、網(wǎng)站暫時癱瘓以及URL失效等情況下數(shù)據(jù)的獲取。
在現(xiàn)有技術(shù)中,通過將頁面URL記錄后存儲在隊列中,隔一個間隔時間重復(fù)一次,在重復(fù)次數(shù)達(dá)到一個閥值時,若仍然無法獲取該的數(shù)據(jù)之后,判定該URL已失效,并停止對該的數(shù)據(jù)的獲取。
但是在采用現(xiàn)有技術(shù)所提供的方法時,由于無法找到一個合適的間隔時間。若設(shè)置時間間隔過長,容易造成因網(wǎng)絡(luò)故障而導(dǎo)致的數(shù)據(jù)無法獲取的在隊列中大量堆積,加重內(nèi)存負(fù)擔(dān);若設(shè)置的時間間隔過短會造成因URL失效和網(wǎng)站暫時癱瘓而導(dǎo)致的數(shù)據(jù)無法獲取的被頻繁重試,加重服務(wù)器和網(wǎng)絡(luò)負(fù)擔(dān)。同時,由于網(wǎng)站暫時癱瘓的恢復(fù)時間無法度量,可能在網(wǎng)站恢復(fù)之前該URL已經(jīng)達(dá)到重試次數(shù)被丟棄,造成因網(wǎng)站暫時癱瘓而導(dǎo)致的數(shù)據(jù)無法獲取的被丟棄的情況,使得在使用現(xiàn)有技術(shù)所提供的方法時,降低了數(shù)據(jù)獲取的可靠性,降低了數(shù)據(jù)獲取的效率。
技術(shù)實現(xiàn)要素:
為了提高數(shù)據(jù)獲取的可靠性,提高數(shù)據(jù)獲取的效率,本申請實施例提供了 一種數(shù)據(jù)獲取方法和裝置。所述技術(shù)方案如下:
本申請?zhí)峁┝艘环N數(shù)據(jù)獲取方法,所述方法包括:
獲取失敗的數(shù)據(jù)爬取任務(wù),其中,所述數(shù)據(jù)爬取任務(wù)至少包含:數(shù)據(jù)爬取失敗的次數(shù)和數(shù)據(jù)爬取失敗的時間;
根據(jù)所述數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間,確定所述失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間;
根據(jù)所述重新進(jìn)行數(shù)據(jù)爬取的時間,對所述失敗的數(shù)據(jù)爬取任務(wù)執(zhí)行重新數(shù)據(jù)爬取任務(wù)。
本申請還提供了一種數(shù)據(jù)獲取裝置,所述裝置包括:
獲取模塊,用于獲取失敗的數(shù)據(jù)爬取任務(wù),其中,所述數(shù)據(jù)爬取任務(wù)至少包含:數(shù)據(jù)爬取失敗的次數(shù)和數(shù)據(jù)爬取失敗的時間;
第一處理模塊,用于根據(jù)所述數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間,確定所述失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間;
第二處理模塊,用于根據(jù)所述重新進(jìn)行數(shù)據(jù)爬取的時間,對所述失敗的數(shù)據(jù)爬取任務(wù)執(zhí)行重新數(shù)據(jù)爬取任務(wù)。
本申請實施例提供了一種數(shù)據(jù)獲取方法和裝置,包括:獲取失敗的數(shù)據(jù)爬取任務(wù),其中,數(shù)據(jù)爬取任務(wù)至少包含:數(shù)據(jù)爬取失敗的次數(shù)和數(shù)據(jù)爬取失敗的時間;根據(jù)數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間,確定失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間;根據(jù)重新進(jìn)行數(shù)據(jù)爬取的時間,對失敗的數(shù)據(jù)爬取任務(wù)執(zhí)行重新數(shù)據(jù)爬取任務(wù)。通過根據(jù)數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間,確定失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間,使得可以根據(jù)數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間對該失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間進(jìn)行調(diào)整,從而避免了對由于網(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的遺漏,保證了數(shù)據(jù)獲取的可靠性,同時避免了短時間內(nèi)通 過網(wǎng)絡(luò)爬蟲程序?qū)τ捎诰W(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的進(jìn)行重復(fù)的爬取,而造成的網(wǎng)絡(luò)資源負(fù)擔(dān)和裝置的系統(tǒng)資源負(fù)擔(dān),從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。
附圖說明
為了更清楚地說明本申請實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本申請實施例提供的一種數(shù)據(jù)獲取方法流程圖;
圖2是本申請實施例提供的一種數(shù)據(jù)獲取方法流程圖;
圖3是本申請實施例提供的一種數(shù)據(jù)獲取裝置結(jié)構(gòu)示意圖;
圖4是本申請實施例提供的一種數(shù)據(jù)獲取裝置結(jié)構(gòu)示意圖。
具體實施方式
為使本申請的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護(hù)的范圍。
本申請實施例提供一種數(shù)據(jù)獲取方法,該方法應(yīng)用場景包括通過網(wǎng)絡(luò)爬蟲程序通過執(zhí)行爬取任務(wù)獲取網(wǎng)頁數(shù)據(jù),該爬取任務(wù)至少包括所要獲取的網(wǎng)頁數(shù)據(jù)所在的網(wǎng)頁標(biāo)識。除此之外,該方法還可以應(yīng)用于其他根據(jù)網(wǎng)頁標(biāo)識信息獲取網(wǎng)頁數(shù)據(jù)的場景,該網(wǎng)頁標(biāo)識可以為該網(wǎng)頁的URL(Uniform Resource Locator,統(tǒng)一資源定位符),本申請實施例對具體的應(yīng)用場景不加以限定。
實施例一為本申請實施例提供的一種數(shù)據(jù)獲取方法,參照圖1所示,該方 法包括:
101、獲取失敗的數(shù)據(jù)爬取任務(wù)。
其中,數(shù)據(jù)爬取任務(wù)至少包含:數(shù)據(jù)爬取失敗的次數(shù)和數(shù)據(jù)爬取失敗的時間。獲取失敗的數(shù)據(jù)爬取任務(wù),可以通過實時監(jiān)測的方式或者預(yù)設(shè)的存儲失敗的數(shù)據(jù)爬取任務(wù)的數(shù)據(jù)庫中獲取。
第一種情況,當(dāng)監(jiān)測到數(shù)據(jù)爬取任務(wù)失敗時,可以獲取該數(shù)據(jù)爬取任務(wù)的失敗時間(即該時間可以是初次數(shù)據(jù)爬取失敗的時間,也可以是執(zhí)行主體掃描到該數(shù)據(jù)爬取任務(wù)失敗時的時間,對此本申請不做任何限定),以及執(zhí)行主體所設(shè)置的在數(shù)據(jù)爬取失敗時重新執(zhí)行爬取任務(wù)的次數(shù),然后,根據(jù)實際爬取目標(biāo)的需求,將將所述數(shù)據(jù)爬取失敗的次數(shù)和所述數(shù)據(jù)爬取失敗的時間至預(yù)設(shè)的數(shù)據(jù)庫。其中,爬取目標(biāo)可以是指網(wǎng)站訪問量的爬取、微博點擊量的爬取等。
此處需要注意的是,若系統(tǒng)未設(shè)置在數(shù)據(jù)爬取失敗時重新執(zhí)行爬取任務(wù)的次數(shù),則可默認(rèn)為數(shù)據(jù)爬取失敗的次數(shù)為零。
第二種情況,針對爬取效率較低的系統(tǒng)(即執(zhí)行主體),對于步驟101獲取失敗的數(shù)據(jù)爬取任務(wù),還可以是從預(yù)設(shè)的存儲失敗的數(shù)據(jù)爬取任務(wù)的數(shù)據(jù)庫中來獲取,以提高該執(zhí)行主體執(zhí)行數(shù)據(jù)爬取任務(wù)的效率。
具體地,在執(zhí)行主體執(zhí)行從任務(wù)池中獲取的數(shù)據(jù)爬取任務(wù)時,若爬取失敗,則將失敗的數(shù)據(jù)爬取任務(wù)存儲至預(yù)設(shè)的數(shù)據(jù)庫,該失敗的數(shù)據(jù)爬取任務(wù)包括數(shù)據(jù)爬取失敗的次數(shù)和數(shù)據(jù)爬取失敗的時間、所處于爬取失敗的環(huán)境等信息。
該預(yù)設(shè)的數(shù)據(jù)庫可以被預(yù)先設(shè)置在服務(wù)器上,也可以被預(yù)先設(shè)置在裝置的緩存中,還可以被預(yù)先設(shè)置在裝置的數(shù)據(jù)庫中,本申請實施例對該預(yù)設(shè)的數(shù)據(jù)庫所在的位置不加以限定。
其中,該預(yù)設(shè)的數(shù)據(jù)庫所包含的至少一個失敗的數(shù)據(jù)爬取任務(wù)可以根據(jù)添加的時間進(jìn)行排序。
102、根據(jù)數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間,確定失敗的數(shù)據(jù) 爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間。
具體地,首先,可以根據(jù)所執(zhí)行的數(shù)據(jù)爬取任務(wù)的不同爬取目標(biāo)、數(shù)據(jù)爬取失敗的次數(shù)或數(shù)據(jù)爬取失敗的時間來確定數(shù)據(jù)爬取的時間間隔;其中,這里所說的爬取目標(biāo),可以是指網(wǎng)站訪問量的爬取、微博點擊量的爬取等環(huán)境,對此本申請不做任何限定。然后,根據(jù)所述數(shù)據(jù)爬取的時間間隔、所述數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間,生成所述失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間。
103、根據(jù)重新進(jìn)行數(shù)據(jù)爬取的時間,對失敗的數(shù)據(jù)爬取任務(wù)執(zhí)行重新數(shù)據(jù)爬取任務(wù)。若滿足,則設(shè)置失敗的數(shù)據(jù)爬取任務(wù)為網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的任務(wù)。
具體地,可利用判斷重新進(jìn)行數(shù)據(jù)爬取的時間是否滿足網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的時間,以重新執(zhí)行所述失敗的數(shù)據(jù)爬取任務(wù),其中,網(wǎng)絡(luò)爬蟲程序當(dāng)前要執(zhí)行的時間,可以根據(jù)所需要執(zhí)行的數(shù)據(jù)爬取的環(huán)境來設(shè)置,對此本申請不做任何限定。
進(jìn)一步地,當(dāng)所述重新進(jìn)行數(shù)據(jù)爬取的時間不滿足網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的時間時,步驟105還可以包括:將失敗的數(shù)據(jù)爬取任務(wù)存儲至預(yù)設(shè)的數(shù)據(jù)庫中,以待進(jìn)行下一次的重新進(jìn)行數(shù)據(jù)爬取的時間判斷。
本申請實施例提供了一種數(shù)據(jù)獲取方法,通過根據(jù)數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間,確定失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間,使得可以根據(jù)數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間對該失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間進(jìn)行調(diào)整,從而避免了對由于網(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的遺漏,保證了數(shù)據(jù)獲取的可靠性,同時避免了短時間內(nèi)通過網(wǎng)絡(luò)爬蟲程序?qū)τ捎诰W(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的進(jìn)行重復(fù)的爬取,而造成的網(wǎng)絡(luò)資源負(fù)擔(dān)和裝置的系統(tǒng)資源負(fù)擔(dān),從而進(jìn)一步提高 了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。另外,判斷重新進(jìn)行數(shù)據(jù)爬取的時間是否滿足網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的時間;若滿足,則設(shè)置失敗的數(shù)據(jù)爬取任務(wù)為網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的任務(wù),不僅進(jìn)一步的避免了短時間內(nèi)通過網(wǎng)絡(luò)爬蟲程序?qū)τ捎诰W(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的進(jìn)行重復(fù)的爬取,而造成的網(wǎng)絡(luò)資源負(fù)擔(dān)和裝置的系統(tǒng)資源負(fù)擔(dān),從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率,還保證了由于網(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的在網(wǎng)站暫時癱瘓解決之后,該信息的及時獲取,從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。
實施例二為本申請實施例提供的一種數(shù)據(jù)獲取方法,參照圖2所示,該方法包括:
201、獲取失敗的數(shù)據(jù)爬取任務(wù),其中,數(shù)據(jù)爬取任務(wù)至少包含:數(shù)據(jù)爬取失敗的次數(shù)和數(shù)據(jù)爬取失敗的時間。
具體地,在預(yù)設(shè)周期之后,從預(yù)設(shè)的數(shù)據(jù)庫中獲取失敗的數(shù)據(jù)爬取任務(wù)。
從預(yù)設(shè)的數(shù)據(jù)庫中獲取失敗的數(shù)據(jù)爬取任務(wù)的過程可以為:
在預(yù)設(shè)周期之后,通過對預(yù)設(shè)的數(shù)據(jù)庫中所包含的失敗的數(shù)據(jù)爬取任務(wù)進(jìn)行掃描,并根據(jù)該預(yù)設(shè)的數(shù)據(jù)庫中的所包含的失敗的數(shù)據(jù)爬取任務(wù)的添加時間順序,從預(yù)設(shè)的數(shù)據(jù)庫中獲取添加時間較早的失敗的數(shù)據(jù)爬取任務(wù)。
通過根據(jù)該預(yù)設(shè)的數(shù)據(jù)庫中的所包含的失敗的數(shù)據(jù)爬取任務(wù)的添加時間順序,獲取失敗的數(shù)據(jù)爬取任務(wù),使得添加時間較早的待重試的爬取任務(wù)優(yōu)選進(jìn)行爬取,從而保證了由于網(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的在恢復(fù)至數(shù)據(jù)可獲取的狀態(tài)時,該數(shù)據(jù)的及時獲取,從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。
202、根據(jù)數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間,確定失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間。
具體的,根據(jù)確定的數(shù)據(jù)爬取時間間隔、數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間,生成失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間。
為了進(jìn)一步說明本申請實施例的方法,假設(shè)數(shù)據(jù)爬取失敗的次數(shù)為M,數(shù)據(jù)爬取的時間間隔為N,數(shù)據(jù)爬取失敗的時間為TF,該失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間為TF;
可以根據(jù)第一預(yù)設(shè)函數(shù),實現(xiàn)根據(jù)數(shù)據(jù)爬取時間間隔和數(shù)據(jù)爬取失敗的次數(shù),生成失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間的過程,該第一預(yù)設(shè)函數(shù)TS1可以為公式[1]所示:
TS1=N×aM [1]
還可以根據(jù)第二預(yù)設(shè)函數(shù),實現(xiàn)根據(jù)數(shù)據(jù)爬取的時間間隔和數(shù)據(jù)爬取失敗的時間,生成失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間的過程,該第二預(yù)設(shè)函數(shù)TS2可以為公式[2]所示:
TS2=TF+N×a [2]
另外,還可以根據(jù)第三預(yù)設(shè)函數(shù),實現(xiàn)根據(jù)數(shù)據(jù)爬取的時間間隔、數(shù)據(jù)爬取失敗的時間和數(shù)據(jù)爬取失敗的次數(shù),生成失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間的過程,該第三預(yù)設(shè)函數(shù)TS3可以為公式[3]所示:
TS3=TF+N×aM [3]
其中,上述公式[1]-公式[3]中的a為預(yù)設(shè)系數(shù),且a大于1。
需要說明的是,上述第一預(yù)設(shè)函數(shù)、第二預(yù)設(shè)函數(shù)和第三預(yù)設(shè)函數(shù)僅僅是示例性的,除此之外,還可以包括其他函數(shù)性質(zhì)為非減函數(shù)的預(yù)設(shè)函數(shù),本申請實施例對具體的預(yù)設(shè)函數(shù)不加以限定。
通過所確定的數(shù)據(jù)爬取的時間間隔、數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間,生成失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間,保證了數(shù)據(jù)爬取失敗的次數(shù)較多的失敗的數(shù)據(jù)爬取任務(wù)的執(zhí)行時間晚于數(shù)據(jù)爬取失敗的次數(shù)較少的失敗的數(shù)據(jù)爬取任務(wù)的執(zhí)行時間,而失敗次數(shù)越多,說明該數(shù)據(jù)爬取任務(wù)的成功執(zhí)行的概率越低,保證了成功執(zhí)行的概率越高的任務(wù)優(yōu)先執(zhí)行,保證 了數(shù)據(jù)的及時獲取,從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。另外,通過數(shù)據(jù)爬取失敗的時間,生成失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間,保證了由于網(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的在恢復(fù)至數(shù)據(jù)可獲取的狀態(tài)時,該數(shù)據(jù)的及時獲取,從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。另外,通過根據(jù)數(shù)據(jù)爬取失敗的次數(shù),生成失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間,避免了短時間內(nèi)通過網(wǎng)絡(luò)爬蟲程序?qū)τ捎诰W(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的進(jìn)行重復(fù)的爬取,而造成的網(wǎng)絡(luò)資源負(fù)擔(dān)和裝置的系統(tǒng)資源負(fù)擔(dān),從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。
203、判斷重新進(jìn)行數(shù)據(jù)爬取的時間是否滿足網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的時間;若滿足,則執(zhí)行步驟204,若不滿足,則執(zhí)行步驟205。
其中,網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的時間為可以設(shè)置為數(shù)據(jù)爬取時間間隔的整數(shù)倍。
通過判定重新進(jìn)行數(shù)據(jù)爬取的時間小于網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的時間,避免了短時間內(nèi)通過網(wǎng)絡(luò)爬蟲程序?qū)τ捎诰W(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的進(jìn)行重復(fù)的爬取,而造成的網(wǎng)絡(luò)資源負(fù)擔(dān)和裝置的系統(tǒng)資源負(fù)擔(dān),從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。
204、設(shè)置失敗的數(shù)據(jù)爬取任務(wù)為網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的任務(wù)。
具體地,將該失敗的數(shù)據(jù)爬取任務(wù)添加至網(wǎng)絡(luò)爬蟲程序的任務(wù)池中。
通過將失敗的數(shù)據(jù)爬取任務(wù)設(shè)置為網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的任務(wù),保證了該失敗的數(shù)據(jù)爬取任務(wù)的及時重新爬取,進(jìn)而保證了數(shù)據(jù)的及時獲取,從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。
值得注意的是,步驟203至步驟204是實現(xiàn)根據(jù)重新進(jìn)行數(shù)據(jù)爬取的時間,對失敗的數(shù)據(jù)爬取任務(wù)執(zhí)行重新數(shù)據(jù)爬取任務(wù),除了上述步驟的方式之外,還可以通過其他方式實現(xiàn)該過程,本申請實施例對具體的方式不加以限定。
由于重新進(jìn)行數(shù)據(jù)爬取的時間是根據(jù)數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失 敗的時間生成的,從而保證了數(shù)據(jù)爬取失敗的次數(shù)較多的失敗的數(shù)據(jù)爬取任務(wù)的執(zhí)行時間晚于數(shù)據(jù)爬取失敗的次數(shù)較少的失敗的數(shù)據(jù)爬取任務(wù)的執(zhí)行時間,而失敗次數(shù)越多,說明該數(shù)據(jù)爬取任務(wù)的成功執(zhí)行的概率越低,保證了成功執(zhí)行的概率越高的任務(wù)優(yōu)先執(zhí)行,保證了數(shù)據(jù)的及時獲取,從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。
205,將失敗的數(shù)據(jù)爬取任務(wù)存儲至預(yù)設(shè)的數(shù)據(jù)庫中,以待進(jìn)行下一次的重新進(jìn)行數(shù)據(jù)爬取的時間判斷,并獲取預(yù)設(shè)的數(shù)據(jù)庫中該失敗的數(shù)據(jù)爬取任務(wù)對應(yīng)的下一個失敗的數(shù)據(jù)爬取任務(wù)。
通過在重新進(jìn)行數(shù)據(jù)爬取的時間不滿足網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的時間時,將失敗的數(shù)據(jù)爬取任務(wù)存儲至預(yù)設(shè)的數(shù)據(jù)庫中,避免了短時間內(nèi)通過網(wǎng)絡(luò)爬蟲程序?qū)τ捎诰W(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的進(jìn)行重復(fù)的爬取,而造成的網(wǎng)絡(luò)資源負(fù)擔(dān)和裝置的系統(tǒng)資源負(fù)擔(dān),從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。
通過執(zhí)行本申請實施例的方法,不僅避免了短時間內(nèi)通過網(wǎng)絡(luò)爬蟲程序?qū)τ捎诰W(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的進(jìn)行重復(fù)的爬取,而造成的網(wǎng)絡(luò)資源負(fù)擔(dān)和裝置的系統(tǒng)資源負(fù)擔(dān),還保證了該網(wǎng)站在恢復(fù)至數(shù)據(jù)可獲取的狀態(tài)時,該數(shù)據(jù)的及時獲取,從而提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。
本申請實施例提供了一種數(shù)據(jù)獲取方法,通過根據(jù)待重試的爬取任務(wù)的重試次數(shù)以及上一次重試時的第一任務(wù)時間,生成將要重試待重試的爬取任務(wù)的第二任務(wù)時間,使得可以根據(jù)待重試的爬取任務(wù)的重試次數(shù)和上一次的重試時間對該待重試的爬取任務(wù)的重試時間進(jìn)行調(diào)整,從而避免了對由于網(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的遺漏,保證了數(shù)據(jù)獲取的可靠性。另外,通過根據(jù)待重試的爬取任務(wù)的重試次數(shù)以及上一次重試時的第一任務(wù)時間,生成將要重試待重試的爬取任務(wù)的第二任務(wù)時間,避免了短時間內(nèi)通過網(wǎng)絡(luò)爬蟲程序?qū)τ捎诰W(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的進(jìn)行重復(fù)的爬取,而造成的 網(wǎng)絡(luò)資源負(fù)擔(dān)和裝置的系統(tǒng)資源負(fù)擔(dān),從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。另外,通過判斷第二任務(wù)時間是否滿足預(yù)設(shè)條件,若是,則設(shè)置待重試的爬取任務(wù)為網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的任務(wù);否則,獲取該待重試的爬取任務(wù)的下一個待重試的爬取任務(wù),不設(shè)置爬取任務(wù)為網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的任務(wù),不僅進(jìn)一步的避免了短時間內(nèi)通過網(wǎng)絡(luò)爬蟲程序?qū)τ捎诰W(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的進(jìn)行重復(fù)的爬取,而造成的網(wǎng)絡(luò)資源負(fù)擔(dān)和裝置的系統(tǒng)資源負(fù)擔(dān),從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率,還保證了由于網(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的在網(wǎng)站暫時癱瘓解決之后,該信息的及時獲取,從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。
實施例三為本申請實施例提供的一種數(shù)據(jù)獲取裝置,參照圖3所示,該數(shù)據(jù)獲取裝置包括:
獲取模塊31,用于獲取失敗的數(shù)據(jù)爬取任務(wù),其中,數(shù)據(jù)爬取任務(wù)至少包含:數(shù)據(jù)爬取失敗的次數(shù)和數(shù)據(jù)爬取失敗的時間;
第一處理模塊32,用于根據(jù)數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間,確定失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間;
第二處理模塊33,用于根據(jù)重新進(jìn)行數(shù)據(jù)爬取的時間,對失敗的數(shù)據(jù)爬取任務(wù)執(zhí)行重新數(shù)據(jù)爬取任務(wù)。
所述獲取模塊,用于:針對所獲取的失敗的數(shù)據(jù)爬取任務(wù),獲得數(shù)據(jù)爬取失敗的次數(shù)和數(shù)據(jù)爬取失敗的時間;將所述數(shù)據(jù)爬取失敗的次數(shù)和所述數(shù)據(jù)爬取失敗的時間至預(yù)設(shè)的數(shù)據(jù)庫。
可選的,第一處理模塊32可以包括:
確定子模塊,用于確定數(shù)據(jù)爬取的時間間隔;
生成子模塊,用于根據(jù)確定數(shù)據(jù)爬取的時間間隔、數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間,生成失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間。
可選的,第二處理模塊33具體用于:
判斷重新進(jìn)行數(shù)據(jù)爬取的時間是否滿足網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的時間;
若滿足,則設(shè)置失敗的數(shù)據(jù)爬取任務(wù)為網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的任務(wù)。
可選的,第二處理模塊33還用于:
將失敗的數(shù)據(jù)爬取任務(wù)存儲至預(yù)設(shè)的數(shù)據(jù)庫中,以待進(jìn)行下一次的重新進(jìn)行數(shù)據(jù)爬取的時間判斷。
本申請實施例提供了一種數(shù)據(jù)獲取裝置,該數(shù)據(jù)獲取裝置通過根據(jù)數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間,確定失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間,使得可以根據(jù)數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間對該失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間進(jìn)行調(diào)整,從而避免了對由于網(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的遺漏,保證了數(shù)據(jù)獲取的可靠性,同時避免了短時間內(nèi)通過網(wǎng)絡(luò)爬蟲程序?qū)τ捎诰W(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的進(jìn)行重復(fù)的爬取,而造成的網(wǎng)絡(luò)資源負(fù)擔(dān)和裝置的系統(tǒng)資源負(fù)擔(dān),從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。另外,判斷重新進(jìn)行數(shù)據(jù)爬取的時間是否滿足網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的時間;若滿足,則設(shè)置失敗的數(shù)據(jù)爬取任務(wù)為網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的任務(wù),不僅進(jìn)一步的避免了短時間內(nèi)通過網(wǎng)絡(luò)爬蟲程序?qū)τ捎诰W(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的進(jìn)行重復(fù)的爬取,而造成的網(wǎng)絡(luò)資源負(fù)擔(dān)和裝置的系統(tǒng)資源負(fù)擔(dān),從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率,還保證了由于網(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的在網(wǎng)站暫時癱瘓解決之后,該信息的及時獲取,從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。
實施例四位本申請實施例提供的一種數(shù)據(jù)獲取裝置4,參照圖4所示,該數(shù)據(jù)獲取裝置4包括存儲器41和與存儲器41連接的處理器42,存儲器41用于存儲一組程序代碼,處理器42調(diào)用存儲器41所存儲的程序代碼用于執(zhí)行以下操作:
獲取失敗的數(shù)據(jù)爬取任務(wù),其中,數(shù)據(jù)爬取任務(wù)至少包含:數(shù)據(jù)爬取失敗的次數(shù)和數(shù)據(jù)爬取失敗的時間;
根據(jù)數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間,確定失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間;
根據(jù)重新進(jìn)行數(shù)據(jù)爬取的時間,對失敗的數(shù)據(jù)爬取任務(wù)執(zhí)行重新數(shù)據(jù)爬取任務(wù)。
可選的,處理器42調(diào)用存儲器41所存儲的程序代碼用于執(zhí)行以下操作:
將數(shù)據(jù)爬取失敗的次數(shù)和數(shù)據(jù)爬取失敗的時間至預(yù)設(shè)的數(shù)據(jù)庫。
可選的,處理器42調(diào)用存儲器41所存儲的程序代碼用于執(zhí)行以下操作:
根據(jù)預(yù)設(shè)時間間隔、數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間,生成失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間。
可選的,處理器42調(diào)用存儲器41所存儲的程序代碼用于執(zhí)行以下操作:
判斷重新進(jìn)行數(shù)據(jù)爬取的時間是否滿足網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的時間;
若滿足,則設(shè)置失敗的數(shù)據(jù)爬取任務(wù)為網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的任務(wù)。
可選的,處理器42調(diào)用存儲器41所存儲的程序代碼用于執(zhí)行以下操作:
將失敗的數(shù)據(jù)爬取任務(wù)存儲至預(yù)設(shè)的數(shù)據(jù)庫中,以待進(jìn)行下一次的重新進(jìn)行數(shù)據(jù)爬取的時間判斷。
本申請實施例提供了一種數(shù)據(jù)獲取裝置,該數(shù)據(jù)獲取裝置通過根據(jù)數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間,確定失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間,使得可以根據(jù)數(shù)據(jù)爬取失敗的次數(shù)和/或數(shù)據(jù)爬取失敗的時間對該失敗的數(shù)據(jù)爬取任務(wù)重新進(jìn)行數(shù)據(jù)爬取的時間進(jìn)行調(diào)整,從而避免了對由于網(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的遺漏,保證了數(shù)據(jù)獲取的可靠性,同時避免了短時間內(nèi)通過網(wǎng)絡(luò)爬蟲程序?qū)τ捎诰W(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的進(jìn)行重復(fù)的爬取,而造成的網(wǎng)絡(luò)資源負(fù)擔(dān)和裝置的系統(tǒng)資源負(fù)擔(dān),從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。另外,判斷重 新進(jìn)行數(shù)據(jù)爬取的時間是否滿足網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的時間;若滿足,則設(shè)置失敗的數(shù)據(jù)爬取任務(wù)為網(wǎng)絡(luò)爬蟲程序當(dāng)前將要執(zhí)行的任務(wù),不僅進(jìn)一步的避免了短時間內(nèi)通過網(wǎng)絡(luò)爬蟲程序?qū)τ捎诰W(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的進(jìn)行重復(fù)的爬取,而造成的網(wǎng)絡(luò)資源負(fù)擔(dān)和裝置的系統(tǒng)資源負(fù)擔(dān),從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率,還保證了由于網(wǎng)站暫時癱瘓等原因?qū)е碌臒o法獲取數(shù)據(jù)的在網(wǎng)站暫時癱瘓解決之后,該信息的及時獲取,從而進(jìn)一步提高了數(shù)據(jù)獲取的可靠性,提高了數(shù)據(jù)獲取的效率。
上述所有可選技術(shù)方案,可以采用任意結(jié)合形成本申請的可選實施例,在此不再一一贅述。
需要說明的是:上述實施例提供的裝置在執(zhí)行數(shù)據(jù)獲取方法時,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將設(shè)備的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例提供的數(shù)據(jù)獲取裝置與數(shù)據(jù)獲取方法實施例屬于同一構(gòu)思,其具體實現(xiàn)過程詳見方法實施例,這里不再贅述。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
以上僅為本申請的較佳實施例,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請的保護(hù)范圍之內(nèi)。