本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種網(wǎng)絡(luò)爬蟲抓取任務(wù)分配方法與裝置及數(shù)據(jù)抓取方法與裝置。
背景技術(shù):
網(wǎng)絡(luò)爬蟲(Computer Robot,又稱為網(wǎng)頁(yè)蜘蛛或網(wǎng)絡(luò)機(jī)器人),是一種按照一定的規(guī)則自動(dòng)抓取互聯(lián)網(wǎng)網(wǎng)頁(yè)數(shù)據(jù)的程序,是搜索引擎的重要組成。通常網(wǎng)絡(luò)爬蟲根據(jù)配置的抓取任務(wù)從互聯(lián)網(wǎng)下載網(wǎng)頁(yè),對(duì)網(wǎng)頁(yè)進(jìn)行解析和過濾,獲取目標(biāo)網(wǎng)頁(yè)數(shù)據(jù)。所有被網(wǎng)絡(luò)爬蟲抓取的目標(biāo)網(wǎng)頁(yè)數(shù)據(jù)存儲(chǔ)于爬蟲系統(tǒng),并建立索引,以便之后的查詢和檢索。
網(wǎng)絡(luò)和信息技術(shù)的發(fā)展使得網(wǎng)站、網(wǎng)頁(yè)和網(wǎng)頁(yè)數(shù)據(jù)的數(shù)量極速增長(zhǎng),一個(gè)爬蟲系統(tǒng)需要眾多網(wǎng)絡(luò)爬蟲來抓取大量的網(wǎng)頁(yè)數(shù)據(jù),這些網(wǎng)絡(luò)爬蟲可能分布在同一個(gè)局域網(wǎng)之中,也可能分散在不同的地理位置。根據(jù)網(wǎng)絡(luò)爬蟲的分散程度不同,爬蟲系統(tǒng)主要分為兩種架構(gòu):1、基于局域網(wǎng)的分布式架構(gòu),這種架構(gòu)中所有網(wǎng)絡(luò)爬蟲在同一個(gè)局域網(wǎng)里運(yùn)行,通過同一個(gè)局域網(wǎng)訪問外部互聯(lián)網(wǎng),下載網(wǎng)頁(yè),所有的網(wǎng)絡(luò)負(fù)載都集中在局域網(wǎng)的出口上,由于網(wǎng)絡(luò)出口的總帶寬上限是固定的,網(wǎng)絡(luò)爬蟲的數(shù)量會(huì)受到局域網(wǎng)出口帶寬的限制;2、基于廣域網(wǎng)的分布式架構(gòu):并行的網(wǎng)絡(luò)爬蟲分別運(yùn)行在不同地理位置或網(wǎng)絡(luò)位置,例如,網(wǎng)絡(luò)爬蟲可能位于不同機(jī)房,或者位于中國(guó)、日本和美國(guó),分別負(fù)責(zé)下載這三地的網(wǎng)頁(yè),或者位于CHINANET、CERNET和CEINET,分別負(fù)責(zé)下載這三個(gè)網(wǎng)絡(luò)中的網(wǎng)頁(yè),這種架構(gòu)下每個(gè)網(wǎng)絡(luò)爬蟲通過各自的網(wǎng)絡(luò)訪問外部互聯(lián)網(wǎng),只受各自對(duì)應(yīng)的出口帶寬的影響,從而分散網(wǎng)絡(luò)流量,減輕網(wǎng)絡(luò)負(fù)載。
基于廣域網(wǎng)的分布式架構(gòu)是目前應(yīng)用較多的爬蟲系統(tǒng)架構(gòu),但這種架構(gòu)下,由于網(wǎng)絡(luò)爬蟲數(shù)量大及內(nèi)容抓取需求多,網(wǎng)絡(luò)爬蟲部署分散,各個(gè)網(wǎng)絡(luò)爬蟲對(duì)應(yīng)的出口帶寬可能會(huì)千差萬別,網(wǎng)絡(luò)資源使用情況不合理會(huì)使抓取效率降低。另一方面,抓取任務(wù)數(shù)量增長(zhǎng)容易產(chǎn)生頁(yè)面重復(fù)抓取問題,比如A任務(wù)需要抓取C頁(yè)面的頂部數(shù)據(jù),當(dāng)爬蟲系統(tǒng)完成任務(wù)后,下一個(gè)到來的B任務(wù)需要抓取C頁(yè)面的底部數(shù)據(jù),由于A任務(wù)中網(wǎng)絡(luò)爬蟲只返回并存儲(chǔ)了C頁(yè)面的頂部數(shù)據(jù),因此只能對(duì)C頁(yè)面再進(jìn)行一次下載來獲得C頁(yè)面的底部數(shù)據(jù),這樣會(huì)造成爬蟲資源的浪費(fèi),導(dǎo)致網(wǎng)絡(luò)爬蟲集群壓力增加。
技術(shù)實(shí)現(xiàn)要素:
為克服相關(guān)技術(shù)中網(wǎng)絡(luò)爬蟲抓取任務(wù)網(wǎng)絡(luò)資源使用不合理,以及頁(yè)面重復(fù)抓取的問 題,本申請(qǐng)?zhí)峁┮环N網(wǎng)絡(luò)爬蟲抓取任務(wù)分配方法與裝置及數(shù)據(jù)抓取方法與裝置。
根據(jù)本申請(qǐng)實(shí)施例的第一方面,提供一種網(wǎng)絡(luò)爬蟲抓取任務(wù)分配方法,包括:
定時(shí)檢測(cè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率,計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)并存儲(chǔ),其中,w為網(wǎng)絡(luò)帶寬使用率;
當(dāng)接收到抓取任務(wù)時(shí),根據(jù)所述網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性;
根據(jù)所述可用性確定執(zhí)行任務(wù)的網(wǎng)絡(luò)爬蟲。
可選的,所述定時(shí)檢測(cè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率,計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)并存儲(chǔ),包括:
定時(shí)采集預(yù)設(shè)次數(shù)網(wǎng)絡(luò)帶寬使用率;
計(jì)算網(wǎng)絡(luò)帶寬使用率均值和D(w)=E[w-E(w)]2并存儲(chǔ),其中n為預(yù)設(shè)次數(shù)。
可選的,所述根據(jù)所述網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性,包括:
提取當(dāng)前時(shí)間之前預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w);
根據(jù)預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w),使用樸素貝葉斯分類算法計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性概率和不可用性概率。
可選的,所述根據(jù)所述可用性確定執(zhí)行任務(wù)的網(wǎng)絡(luò)爬蟲,包括:
比較網(wǎng)絡(luò)爬蟲的可用性概率與不可用性概率;
如果網(wǎng)絡(luò)爬蟲的可用性概率大于不可用性概率,確定所述網(wǎng)絡(luò)爬蟲可用,否則,所述網(wǎng)絡(luò)爬蟲不可用;
對(duì)可用的網(wǎng)絡(luò)爬蟲,按可用性概率由大到小的順序選擇執(zhí)行任務(wù)的網(wǎng)絡(luò)爬蟲。
根據(jù)本申請(qǐng)實(shí)施例的第二方面,提供一種網(wǎng)絡(luò)爬蟲數(shù)據(jù)抓取方法,包括:
當(dāng)接收到抓取任務(wù)時(shí),根據(jù)抓取任務(wù)的配置信息在歷史抓取數(shù)據(jù)中查詢是否存在第一歷史頁(yè)面,所述配置信息包括新抓取任務(wù)的統(tǒng)一資源定位符URL簇,所述歷史抓取數(shù)據(jù)包括執(zhí)行歷史抓取任務(wù)所下載的歷史頁(yè)面,所述第一歷史頁(yè)面為與所述新抓取任務(wù)的配置信息對(duì)應(yīng)的歷史頁(yè)面;
如果存在所述第一歷史頁(yè)面,檢測(cè)所述第一歷史頁(yè)面是否可用;
如果所述第一歷史頁(yè)面可用,解析可用的第一歷史頁(yè)面得到第一目標(biāo)頁(yè)面數(shù)據(jù);
如果所述第一歷史頁(yè)面不可用,根據(jù)不可用的第一歷史頁(yè)面對(duì)應(yīng)的統(tǒng)一資源定位符URL簇,以及歷史抓取數(shù)據(jù)中不存在所述第一歷史頁(yè)面的統(tǒng)一資源定位符URL簇,下載對(duì)應(yīng)的頁(yè)面進(jìn)行解析,得到第二目標(biāo)頁(yè)面數(shù)據(jù)。
可選的,所述檢測(cè)所述第一歷史頁(yè)面是否可用,包括:
預(yù)解析所述第一歷史頁(yè)面,判斷抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中是否存在;
如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,判斷所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性是否相同;
如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性相同,則確定所述第一歷史頁(yè)面可用;
如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中不存在,或者如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性不相同,則確定所述第一歷史頁(yè)面不可用。
可選的,所述配置信息還包括歷史頁(yè)面有效時(shí)間,所述檢測(cè)所述第一歷史頁(yè)面是否可用,包括:
判斷所述第一歷史頁(yè)面是否在歷史頁(yè)面有效時(shí)間內(nèi);
如果所述第一歷史頁(yè)面在歷史頁(yè)面有效時(shí)間內(nèi),預(yù)解析所述第一歷史頁(yè)面,判斷抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中是否存在;
如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,判斷所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性是否相同;
如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性相同,則確定所述第一歷史頁(yè)面可用;
如果第一歷史頁(yè)面不在歷史頁(yè)面有效時(shí)間內(nèi),或者所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中不存在,或者如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性不相同,則確定所述第一歷史頁(yè)面不可用。
根據(jù)本申請(qǐng)實(shí)施例的第三方面,提供另一種網(wǎng)絡(luò)爬蟲數(shù)據(jù)抓取方法,包括:
定時(shí)檢測(cè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率,計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)并存儲(chǔ),其中,w為網(wǎng)絡(luò)帶寬使用率;
當(dāng)接收到抓取任務(wù)時(shí),根據(jù)抓取任務(wù)的配置信息在歷史抓取數(shù)據(jù)中查詢是否存在第 一歷史頁(yè)面,所述配置信息包括新抓取任務(wù)的統(tǒng)一資源定位符URL簇,所述歷史抓取數(shù)據(jù)包括執(zhí)行歷史抓取任務(wù)所下載的歷史頁(yè)面,所述第一歷史頁(yè)面為與所述新抓取任務(wù)的配置信息對(duì)應(yīng)的歷史頁(yè)面;
如果存在所述第一歷史頁(yè)面,檢測(cè)所述第一歷史頁(yè)面是否可用;
如果所述第一歷史頁(yè)面可用,解析可用的第一歷史頁(yè)面得到第一目標(biāo)頁(yè)面數(shù)據(jù);
如果所述第一歷史頁(yè)面不可用,根據(jù)所述不可用的第一歷史頁(yè)面對(duì)應(yīng)的統(tǒng)一資源定位符URL簇,以及歷史抓取數(shù)據(jù)中不存在所述第一歷史頁(yè)面的統(tǒng)一資源定位符URL簇,形成第二抓取任務(wù);
根據(jù)所述網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性;
根據(jù)各個(gè)網(wǎng)絡(luò)爬蟲的可用性確定執(zhí)行所述第二抓取任務(wù)的網(wǎng)絡(luò)爬蟲;
執(zhí)行所述第二抓取任務(wù)的網(wǎng)絡(luò)爬蟲抓取第二目標(biāo)頁(yè)面數(shù)據(jù),
其中,第一目標(biāo)頁(yè)面數(shù)據(jù)和第二目標(biāo)頁(yè)面數(shù)據(jù)組成所述抓取任務(wù)的目標(biāo)頁(yè)面數(shù)據(jù)。
可選的,所述定時(shí)檢測(cè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率,計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)并存儲(chǔ),包括:
定時(shí)采集預(yù)設(shè)次數(shù)網(wǎng)絡(luò)帶寬使用率;
計(jì)算網(wǎng)絡(luò)帶寬使用率均值和D(w)=E[w-E(w)]2并存儲(chǔ),其中n為預(yù)設(shè)次數(shù)。
可選的,所述檢測(cè)所述第一歷史頁(yè)面是否可用,包括:
預(yù)解析所述第一歷史頁(yè)面,判斷抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中是否存在;
如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,判斷所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性是否相同;
如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性相同,則確定所述第一歷史頁(yè)面可用;
如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中不存在,或者如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性不相同,則確定所述第一歷史頁(yè)面不可用。
可選的,所述配置信息還包括歷史頁(yè)面有效時(shí)間,所述檢測(cè)所述第一歷史頁(yè)面是否可用,包括:
判斷所述第一歷史頁(yè)面是否在歷史頁(yè)面有效時(shí)間內(nèi);
如果所述第一歷史頁(yè)面在歷史頁(yè)面有效時(shí)間內(nèi),預(yù)解析所述第一歷史頁(yè)面,判斷抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中是否存在;
如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,判斷所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性是否相同;
如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性相同,則確定所述第一歷史頁(yè)面可用;
如果第一歷史頁(yè)面不在歷史頁(yè)面有效時(shí)間內(nèi),或者所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中不存在,或者如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性不相同,則確定所述第一歷史頁(yè)面不可用。
可選的,所述根據(jù)所述網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性,包括:
提取當(dāng)前時(shí)間之前預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w);
根據(jù)預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w),使用樸素貝葉斯分類算法計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性概率和不可用性概率。
可選的,所述根據(jù)所述可用性確定執(zhí)行任務(wù)的網(wǎng)絡(luò)爬蟲,包括:
比較網(wǎng)絡(luò)爬蟲的可用性概率與不可用性概率;
如果網(wǎng)絡(luò)爬蟲的可用性概率大于不可用性概率,確定所述網(wǎng)絡(luò)爬蟲可用,否則,確定所述網(wǎng)絡(luò)爬蟲不可用;
對(duì)可用的網(wǎng)絡(luò)爬蟲,按可用性概率由大到小的順序選擇執(zhí)行任務(wù)的網(wǎng)絡(luò)爬蟲。
相應(yīng)于本申請(qǐng)實(shí)施例的第一方面,根據(jù)本申請(qǐng)實(shí)施例的第四方面,提供一種網(wǎng)絡(luò)爬蟲抓取任務(wù)分配裝置,包括:
網(wǎng)絡(luò)帶寬使用率處理單元,用于定時(shí)檢測(cè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率,計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)并存儲(chǔ),其中,w為網(wǎng)絡(luò)帶寬使用率;
爬蟲可用性計(jì)算單元,用于當(dāng)接收到抓取任務(wù)時(shí),根據(jù)所述網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性;
第一爬蟲確定單元,用于根據(jù)所述可用性確定執(zhí)行任務(wù)的網(wǎng)絡(luò)爬蟲。
可選的,所述網(wǎng)絡(luò)帶寬使用率處理單元,包括:
網(wǎng)絡(luò)帶寬使用率采集模塊,用于定時(shí)采集預(yù)設(shè)次數(shù)網(wǎng)絡(luò)帶寬使用率;
均值方差計(jì)算模塊,用于計(jì)算網(wǎng)絡(luò)帶寬使用率均值和D(w)=E[w-E(w)]2并存儲(chǔ),其中n為預(yù)設(shè)次數(shù)。
可選的,所述爬蟲可用性計(jì)算單元,包括:
均值方差提取模塊,提取當(dāng)前時(shí)間之前預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w);
概率計(jì)算模塊,用于根據(jù)預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w),使用樸素貝葉斯分類算法計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性概率和不可用性概率。
可選的,所述第一爬蟲確定單元,包括:
比較模塊,用于比較網(wǎng)絡(luò)爬蟲的可用性概率與不可用性概率;
可用性確定模塊,如果網(wǎng)絡(luò)爬蟲的可用性概率大于不可用性概率,確定所述網(wǎng)絡(luò)爬蟲可用,否則,確定所述網(wǎng)絡(luò)爬蟲不可用;
選擇模塊,用于對(duì)可用的網(wǎng)絡(luò)爬蟲,按可用性概率由大到小的順序選擇執(zhí)行任務(wù)的網(wǎng)絡(luò)爬蟲。
相應(yīng)于本申請(qǐng)實(shí)施例的第二方面,根據(jù)本申請(qǐng)實(shí)施例的第五方面,提供一種網(wǎng)絡(luò)爬蟲數(shù)據(jù)抓取裝置,包括:
第一歷史頁(yè)面查詢單元,用于當(dāng)接收到抓取任務(wù)時(shí),根據(jù)抓取任務(wù)的配置信息在歷史抓取數(shù)據(jù)中查詢是否存在第一歷史頁(yè)面,所述配置信息包括新抓取任務(wù)的統(tǒng)一資源定位符URL簇,所述歷史抓取數(shù)據(jù)包括執(zhí)行歷史抓取任務(wù)所下載的歷史頁(yè)面,所述第一歷史頁(yè)面為與所述新抓取任務(wù)的配置信息對(duì)應(yīng)的歷史頁(yè)面;
歷史頁(yè)面可用性檢測(cè)單元,用于如果存在所述第一歷史頁(yè)面,檢測(cè)所述第一歷史頁(yè)面是否可用;
第一解析單元,用于如果所述第一歷史頁(yè)面可用,解析可用的第一歷史頁(yè)面得到第一目標(biāo)頁(yè)面數(shù)據(jù);
第一抓取單元,用于如果所述第一歷史頁(yè)面不可用,根據(jù)所述不可用的第一歷史頁(yè)面對(duì)應(yīng)的統(tǒng)一資源定位符URL簇,以及歷史抓取數(shù)據(jù)中不存在所述第一歷史頁(yè)面的統(tǒng)一資源定位符URL簇,下載對(duì)應(yīng)的頁(yè)面進(jìn)行解析,得到第二目標(biāo)頁(yè)面數(shù)據(jù)。
可選的,所述歷史頁(yè)面可用性檢測(cè)單元,包括:
第一判斷模塊,用于預(yù)解析所述第一歷史頁(yè)面,判斷抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在 的頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中是否存在;
第二判斷模塊,用于如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,判斷所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性是否相同;
可用確定模塊,用于如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性相同,則確定所述第一歷史頁(yè)面可用;
不可用確定模塊,用于如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中不存在,或者如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性不相同,則所述第一歷史頁(yè)面不可用。
可選的,所述配置信息還包括歷史頁(yè)面有效時(shí)間,所述歷史頁(yè)面可用性檢測(cè)單元,包括:
第三判斷模塊,用于判斷所述第一歷史頁(yè)面是否在歷史頁(yè)面有效時(shí)間內(nèi);
第四判斷模塊,用于如果所述第一歷史頁(yè)面在歷史頁(yè)面有效時(shí)間內(nèi),預(yù)解析所述第一歷史頁(yè)面,判斷抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中是否存在;
第五判斷模塊,用于如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,判斷所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性是否相同;
可用確定模塊,用于如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性相同,則確定所述第一歷史頁(yè)面可用;
不可用確定模塊,用于如果第一歷史頁(yè)面不在歷史頁(yè)面有效時(shí)間內(nèi),或者所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中不存在,或者如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性不相同,則確定所述第一歷史頁(yè)面不可用。
相應(yīng)于本申請(qǐng)實(shí)施例的第三方面,根據(jù)本申請(qǐng)實(shí)施例的第六方面,提供另一種網(wǎng)絡(luò)爬蟲數(shù)據(jù)抓取裝置,包括:
網(wǎng)絡(luò)帶寬使用率處理單元,用于定時(shí)檢測(cè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率,計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)并存儲(chǔ),其中,w為網(wǎng)絡(luò)帶寬使用率;
第一歷史頁(yè)面查詢單元,用于當(dāng)接收到抓取任務(wù)時(shí),根據(jù)抓取任務(wù)的配置信息在歷史抓取數(shù)據(jù)中查詢是否存在第一歷史頁(yè)面,所述配置信息包括新抓取任務(wù)的統(tǒng)一資源定位符URL簇,所述歷史抓取數(shù)據(jù)包括執(zhí)行歷史抓取任務(wù)所下載的歷史頁(yè)面,所述第一歷 史頁(yè)面為與所述新抓取任務(wù)的配置信息對(duì)應(yīng)的歷史頁(yè)面;
歷史頁(yè)面可用性檢測(cè)單元,用于如果存在所述第一歷史頁(yè)面,檢測(cè)所述第一歷史頁(yè)面是否可用;
第一解析單元,用于如果所述第一歷史頁(yè)面可用,解析可用的第一歷史頁(yè)面得到第一目標(biāo)頁(yè)面數(shù)據(jù);
第二抓取任務(wù)生成單元,用于如果所述第一歷史頁(yè)面不可用,根據(jù)不可用的第一歷史頁(yè)面對(duì)應(yīng)的統(tǒng)一資源定位符URL簇,以及歷史抓取數(shù)據(jù)中不存在所述第一歷史頁(yè)面的統(tǒng)一資源定位符URL簇,形成第二抓取任務(wù);
爬蟲可用性計(jì)算單元,用于根據(jù)所述網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性;
第二爬蟲確定單元,用于根據(jù)根據(jù)各個(gè)網(wǎng)絡(luò)爬蟲的可用性確定執(zhí)行所述第二抓取任務(wù)的網(wǎng)絡(luò)爬蟲;
第二抓取單元,用于執(zhí)行所述第二抓取任務(wù)的網(wǎng)絡(luò)爬蟲抓取第二目標(biāo)頁(yè)面數(shù)據(jù),
其中,第一目標(biāo)頁(yè)面數(shù)據(jù)和第二目標(biāo)頁(yè)面數(shù)據(jù)組成所述抓取任務(wù)的目標(biāo)頁(yè)面數(shù)據(jù)。
可選的,所述網(wǎng)絡(luò)帶寬使用率處理單元,包括:
網(wǎng)絡(luò)帶寬使用率采集模塊,用于定時(shí)采集預(yù)設(shè)次數(shù)網(wǎng)絡(luò)帶寬使用率;
均值方差計(jì)算模塊,用于計(jì)算網(wǎng)絡(luò)帶寬使用率均值和D(w)=E[w-E(w)]2并存儲(chǔ),其中n為預(yù)設(shè)次數(shù)。
可選的,所述歷史頁(yè)面可用性檢測(cè)單元,包括:
第一判斷模塊,用于預(yù)解析所述第一歷史頁(yè)面,判斷抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中是否存在;
第二判斷模塊,用于如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,判斷所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性是否相同;
可用確定模塊,用于如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性相同,則確定所述第一歷史頁(yè)面可用;
不可用確定模塊,用于如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中不存在,或者如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性不相同,則所述第一歷史頁(yè)面不可用。
可選的,所述配置信息還包括歷史頁(yè)面有效時(shí)間,所述歷史頁(yè)面可用性檢測(cè)單元, 包括:
第三判斷模塊,用于判斷所述第一歷史頁(yè)面是否在歷史頁(yè)面有效時(shí)間內(nèi);
第四判斷模塊,用于如果所述第一歷史頁(yè)面在歷史頁(yè)面有效時(shí)間內(nèi),預(yù)解析所述第一歷史頁(yè)面,判斷抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中是否存在;
第五判斷模塊,用于如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,判斷所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性是否相同;
可用確定模塊,用于如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性相同,則確定所述第一歷史頁(yè)面可用;
不可用確定模塊,用于如果第一歷史頁(yè)面不在歷史頁(yè)面有效時(shí)間內(nèi),或者所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中不存在,或者如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性不相同,則確定所述第一歷史頁(yè)面不可用。
可選的,所述爬蟲可用性計(jì)算單元,包括:
均值方差提取模塊,提取當(dāng)前時(shí)間之前預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w);
概率計(jì)算模塊,用于根據(jù)預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w),使用樸素貝葉斯分類算法計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性概率和不可用性概率。
可選的,所述第二爬蟲確定單元,包括:
比較模塊,用于比較網(wǎng)絡(luò)爬蟲的可用性概率與不可用性概率;
可用性確定模塊,如果網(wǎng)絡(luò)爬蟲的可用性概率大于不可用性概率,確定所述網(wǎng)絡(luò)爬蟲可用,否則,確定所述網(wǎng)絡(luò)爬蟲不可用;
選擇模塊,用于對(duì)可用的網(wǎng)絡(luò)爬蟲,按可用性概率由大到小的順序選擇執(zhí)行任務(wù)的網(wǎng)絡(luò)爬蟲。
本申請(qǐng)實(shí)施例提供的技術(shù)方案可以包括以下有益效果:本申請(qǐng)實(shí)施例提供的網(wǎng)絡(luò)爬蟲數(shù)據(jù)抓取方法,爬蟲系統(tǒng)保存抓取過的歷史頁(yè)面全頁(yè)包含于歷史抓取數(shù)據(jù),當(dāng)有抓取任務(wù)進(jìn)入時(shí),判斷歷史抓取數(shù)據(jù)中是否存在與抓取任務(wù)的URL簇對(duì)應(yīng)的歷史頁(yè)面,如果存在對(duì)應(yīng)的歷史頁(yè)面且存在的歷史頁(yè)面可用,則對(duì)可用的歷史頁(yè)面直接提取第一目標(biāo)頁(yè) 面數(shù)據(jù),而不需對(duì)這部分歷史頁(yè)面重復(fù)抓取,從而節(jié)省系統(tǒng)資源。對(duì)于不可用的歷史頁(yè)面對(duì)應(yīng)的URL簇,及歷史抓取數(shù)據(jù)中不存在對(duì)應(yīng)歷史頁(yè)面的URL簇,形成第二抓取任務(wù),由網(wǎng)絡(luò)爬蟲抓取對(duì)應(yīng)的頁(yè)面并得到第二目標(biāo)頁(yè)面數(shù)據(jù),由此完成所有目標(biāo)頁(yè)面數(shù)據(jù)的抓取。同時(shí),區(qū)別于通常的使用所有網(wǎng)絡(luò)爬蟲或者隨機(jī)選擇網(wǎng)絡(luò)爬蟲完成抓取任務(wù)的情況,先定時(shí)檢測(cè)所有網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率,計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)并存儲(chǔ),然后根據(jù)E(w)和D(w)計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性,并對(duì)可用的網(wǎng)絡(luò)爬蟲,按可用性概率由大到小的順序選擇執(zhí)行任務(wù)的網(wǎng)絡(luò)爬蟲,以選擇更好的網(wǎng)絡(luò)爬蟲來執(zhí)行抓取任務(wù),從而合理分配網(wǎng)絡(luò)爬蟲資源,提高任務(wù)抓取效率。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本申請(qǐng)。
附圖說明
為了更清楚地說明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,對(duì)于本領(lǐng)域普通技術(shù)人員而言,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請(qǐng)一示例性實(shí)施例示出的一種網(wǎng)絡(luò)爬蟲抓取任務(wù)分配方法的流程示意圖。
圖2為本申請(qǐng)一示例性實(shí)施例示出的一種網(wǎng)絡(luò)爬蟲數(shù)據(jù)抓取方法的流程示意圖。
圖3為本申請(qǐng)一示例性實(shí)施例示出的另一種網(wǎng)絡(luò)爬蟲數(shù)據(jù)抓取方法的流程示意圖。
圖4為本申請(qǐng)一示例性實(shí)施例示出的一種網(wǎng)絡(luò)爬蟲抓取任務(wù)分配裝置的框圖。
圖5為本申請(qǐng)一示例性實(shí)施例示出的一種網(wǎng)絡(luò)爬蟲數(shù)據(jù)抓取裝置的框圖。
圖6為本申請(qǐng)一示例性實(shí)施例示出的另一種網(wǎng)絡(luò)爬蟲數(shù)據(jù)抓取裝置的框圖。
具體實(shí)施方式
這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本申請(qǐng)相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本申請(qǐng)的一些方面相一致的裝置和方法的例子。
為了全面理解本申請(qǐng),在以下詳細(xì)描述中提到了眾多具體的細(xì)節(jié),但是本領(lǐng)域技術(shù)人員應(yīng)該理解,本申請(qǐng)可以無需這些具體細(xì)節(jié)而實(shí)現(xiàn)。在其他實(shí)施例中,不詳細(xì)描述公知的方法、過程、組件和電路,以免不必要地導(dǎo)致實(shí)施例模糊。
圖1為本申請(qǐng)一示例性實(shí)施例示出的一種網(wǎng)絡(luò)爬蟲抓取任務(wù)分配方法的流程示意 圖,如圖1所示,所述方法包括:
S101,定時(shí)檢測(cè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率,計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)并存儲(chǔ),其中,w為網(wǎng)絡(luò)帶寬使用率。
其中,定時(shí)檢測(cè)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用情況,所述定時(shí)可以為周期性間隔一定的時(shí)間,例如,每20min檢測(cè)一次,也可以根據(jù)爬蟲系統(tǒng)的運(yùn)行情況固定多個(gè)時(shí)間點(diǎn)進(jìn)行檢測(cè),例如每天中每個(gè)小時(shí)的第10min、第25min、第30min、第40min和第60min進(jìn)行檢測(cè)。每次檢測(cè)時(shí),采集預(yù)設(shè)次數(shù)網(wǎng)絡(luò)帶寬使用率,以計(jì)算網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w),對(duì)網(wǎng)絡(luò)帶寬使用率的采集可以使用常規(guī)的網(wǎng)絡(luò)帶寬使用率采集方法,需要說明的是,在設(shè)置預(yù)設(shè)次數(shù)時(shí),使采集預(yù)設(shè)次數(shù)的時(shí)間小于或等于檢測(cè)間隔時(shí)間。設(shè)預(yù)
將計(jì)算得到的每個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)存儲(chǔ)于爬蟲系統(tǒng)中,每個(gè)網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)與檢測(cè)時(shí)間對(duì)應(yīng)。
S102,當(dāng)接收到抓取任務(wù)時(shí),根據(jù)所述網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性。
其中,根據(jù)所述網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性,包括:
a1、提取當(dāng)前時(shí)間之前預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w);
a2、根據(jù)預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w),使用樸素貝葉斯分類算法計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性概率和不可用性概率。
當(dāng)爬蟲系統(tǒng)接收到抓取任務(wù)后,先從存儲(chǔ)的網(wǎng)絡(luò)帶寬使用率均值和方差數(shù)據(jù)中,以當(dāng)前時(shí)間(即接收到抓取任務(wù)的時(shí)間)為起點(diǎn),提取當(dāng)前時(shí)間之前預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w),例如,提取當(dāng)前時(shí)間之前2h之內(nèi)的各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值和方差數(shù)據(jù)。然后使用樸素貝葉斯分類算法計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性概率和不可用性概率,其過程如下:
設(shè)網(wǎng)絡(luò)爬蟲的可用性以A(0,1)表示,其中,0表示該網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率允許接收新的任務(wù),1則表示不允許;設(shè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)屬性為X={b,c},其中b表示網(wǎng)絡(luò)帶寬使用率均值E(w),c表示網(wǎng)絡(luò)帶寬使用率方差D(w),那么0<=b<=1,0<=c<=1;網(wǎng)絡(luò)爬蟲的可用性概率為P(a=0|x),不可用性概率為P(a=1|x)。確定b和c的樸素貝葉斯分類算法分段臨界值,該臨界值預(yù)先根據(jù)爬蟲系統(tǒng)的綜合網(wǎng)絡(luò)使用情況,通過多次實(shí)驗(yàn) 后確定,并存儲(chǔ)于爬蟲系統(tǒng)中,例如b的分段臨界值為0.3和0.8,c的分段臨界值為0.2和0.6,則使用樸素貝葉斯分類算法計(jì)算如下條件概率:
P(0<b<=0.3|a=0),P(0.3<b<=0.8|a=0),P(0.8<b<=1|a=0),
P(0<c<=0.2|a=0),P(0.2<c<=0.6|a=0),P(0.6<c<=1|a=0),
P(0<b<=0.3|a=1),P(0.3<b<=0.8|a=1),P(0.8<b<=1|a=1),
P(0<c<=0.2|a=1),P(0.2<c<=0.6|a=1),P(0.6<c<=1|a=1),假設(shè)當(dāng)前某個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)屬性為X={b=0.35,c=0.15},那么有:
P(a=0|x)=P(a=0),
P(0.3<b<=0.8|a=0)P(0<c<=0.2|a=0)P(a=1|x)=P(a=1)P(0.3<b<=0.8|a=1)P(0<c<=0.2|a=1)
由此可以計(jì)算得到P(a=0|x)和P(a=1|x)。如果P(a=0|x)>=P(a=1|x),則當(dāng)前網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬沒有達(dá)到飽和,可以接收新的抓取任務(wù),也就是可用,反之則不可用。使用網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)計(jì)算網(wǎng)絡(luò)爬蟲的可用性概率和不可用性概率也可以使用其他的方法,例如使用檢測(cè)設(shè)備按預(yù)設(shè)的時(shí)間間隔ping(端對(duì)端連通,通常用來進(jìn)行可用性檢查)運(yùn)行各個(gè)網(wǎng)絡(luò)爬蟲的裝置,記錄一定時(shí)間段內(nèi)每個(gè)網(wǎng)絡(luò)爬蟲被ping通的次數(shù)和ping不通的次數(shù),并計(jì)算對(duì)應(yīng)的可ping通概率和不可ping通概率,將可ping通概率作為可用性概率,將不可ping通概率作為不可用性概率,如果可用性概率大于不可用性概率,或者可用性概率大于預(yù)設(shè)的閥值,則認(rèn)為網(wǎng)絡(luò)爬蟲是可用的。
S103,根據(jù)所述可用性確定執(zhí)行任務(wù)的網(wǎng)絡(luò)爬蟲。
其中,步驟S103,包括:
比較網(wǎng)絡(luò)爬蟲的可用性概率與不可用性概率;
如果網(wǎng)絡(luò)爬蟲的可用性概率大于不可用性概率,確定所述網(wǎng)絡(luò)爬蟲可用,否則,所述網(wǎng)絡(luò)爬蟲不可用;
對(duì)可用的網(wǎng)絡(luò)爬蟲,按可用性概率由大到小的順序選擇執(zhí)行任務(wù)的網(wǎng)絡(luò)爬蟲。
其中,對(duì)所有網(wǎng)絡(luò)爬蟲計(jì)算上述可用性概率和不可用性概率,并確定可用的網(wǎng)絡(luò)爬蟲后,對(duì)于可用的網(wǎng)絡(luò)爬蟲,將其按照可用性概率P(a=0|x)的值從大到小排列,然后按此順序依次選擇網(wǎng)絡(luò)爬蟲分配抓取任務(wù)。因?yàn)榭捎眯愿怕试酱螅硎揪W(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬飽和度越低,根據(jù)抓取任務(wù)需要的網(wǎng)絡(luò)帶寬流量,以及可用的網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬飽和度情況及可用性概率排序,可以計(jì)算需要多少網(wǎng)絡(luò)爬蟲。如果可用的網(wǎng)絡(luò)爬蟲不足以實(shí)現(xiàn)抓取任務(wù),則爬蟲系統(tǒng)會(huì)等待其他網(wǎng)絡(luò)爬蟲空閑后,使用空閑的網(wǎng)絡(luò)爬蟲完成余下 的工作量。
圖2為本申請(qǐng)一示例性實(shí)施例示出的一種網(wǎng)絡(luò)爬蟲數(shù)據(jù)抓取方法的流程示意圖,如圖2所示,所述方法包括:
步驟S201,當(dāng)接收到抓取任務(wù)時(shí),根據(jù)抓取任務(wù)的配置信息在歷史抓取數(shù)據(jù)中查詢是否存在第一歷史頁(yè)面,所述配置信息包括抓取任務(wù)的統(tǒng)一資源定位符URL簇,所述歷史抓取數(shù)據(jù)包括執(zhí)行歷史抓取任務(wù)所下載的歷史頁(yè)面,所述第一歷史頁(yè)面為與所述新抓取任務(wù)的配置信息對(duì)應(yīng)的歷史頁(yè)面。
其中,爬蟲系統(tǒng)將網(wǎng)絡(luò)爬蟲執(zhí)行爬蟲任務(wù)時(shí)抓取的頁(yè)面的全頁(yè),即抓取過的歷史頁(yè)面,保存在歷史抓取數(shù)據(jù)中。所述歷史抓取數(shù)據(jù)可以只包括歷史頁(yè)面,也可以包括抓取的歷史目標(biāo)頁(yè)面數(shù)據(jù)。爬蟲系統(tǒng)接收到抓取任務(wù)時(shí),在歷史抓取數(shù)據(jù)中查詢是否存在第一歷史頁(yè)面,所述第一歷史頁(yè)面為與所述抓取任務(wù)的配置信息對(duì)應(yīng)的歷史頁(yè)面,例如,用戶要抓取http://s.1688.com/selloffer/offer_search.htm?keywords=${key}&n=y(tǒng)這個(gè)URL對(duì)應(yīng)的搜索類型頁(yè)面,向爬蟲系統(tǒng)上傳了該URL并上傳了mp3、手機(jī)和電腦3個(gè)關(guān)鍵詞(key),也就是要抓取
http://s.1688.com/selloffer/offer_search.htm?keywords=mp3&n=y(tǒng),
http://s.1688.com/selloffer/offer_search.htm?keywords=手機(jī)&n=y(tǒng)和
http://s.1688.com/selloffer/offer_search.htm?keywords=電腦&n=y(tǒng)三個(gè)頁(yè)面中的數(shù)據(jù),如上述所示用3個(gè)關(guān)鍵詞替換URL中的${key}部分形成的抓取任務(wù)的URL(統(tǒng)一資源定位符)簇,包括于爬蟲任務(wù)的配置信息中。爬蟲系統(tǒng)接收到爬蟲任務(wù)后,根據(jù)所述配置信息中的URL簇,在歷史抓取數(shù)據(jù)中查找是否存在URL簇中的3個(gè)URL對(duì)應(yīng)的歷史頁(yè)面。
步驟S202,如果存在所述第一歷史頁(yè)面,檢測(cè)所述第一歷史頁(yè)面是否可用。
其中,歷史抓取數(shù)據(jù)中可能存在爬蟲任務(wù)中所有URL簇對(duì)應(yīng)的第一歷史頁(yè)面,也可能只存在與部分URL簇對(duì)應(yīng)的第一歷史頁(yè)面,也可能不存在與URL簇對(duì)應(yīng)的第一歷史頁(yè)面。由于被抓取的頁(yè)面的html(HyperText Markup Language,超級(jí)文本標(biāo)記語言)代碼通常是不斷變化的,無法了知其在哪個(gè)時(shí)間點(diǎn)發(fā)生了怎樣的變化,例如抓取任務(wù)目標(biāo)是提取頁(yè)面A的標(biāo)題,3天前曾抓取過的頁(yè)面A的標(biāo)題數(shù)據(jù)是在a標(biāo)簽下,今天抓取任務(wù)生成時(shí),頁(yè)面A的標(biāo)題數(shù)據(jù)變更到了b標(biāo)簽下,這個(gè)時(shí)候雖然歷史抓取數(shù)據(jù)中存在歷史頁(yè)面A,但歷史抓取數(shù)據(jù)中的歷史頁(yè)面A中可能沒有b標(biāo)簽,也可能有b標(biāo)簽但顯然標(biāo)題數(shù)據(jù)不在b標(biāo)簽下,如果在3天前的頁(yè)面A內(nèi)尋找b標(biāo)簽來提取標(biāo)題數(shù)據(jù)就會(huì)發(fā)生錯(cuò)誤。因此,當(dāng)歷史抓取數(shù)據(jù)中存在第一歷史頁(yè)面時(shí),對(duì)存在的第一歷史頁(yè)面進(jìn)行可用性檢測(cè)。
檢測(cè)所述第一歷史頁(yè)面是否可用,在第一種可能的實(shí)施方式中,包括:
b1、預(yù)解析所述第一歷史頁(yè)面,判斷抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中是否存在。
其中,對(duì)所述第一歷史頁(yè)面進(jìn)行預(yù)解析,得到第一歷史頁(yè)面中的標(biāo)簽,將抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽,例如標(biāo)題數(shù)據(jù)所在的頁(yè)面標(biāo)簽,與第一歷史頁(yè)面中的頁(yè)面標(biāo)簽進(jìn)行比對(duì),判斷第一歷史頁(yè)面中是否存在抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽。
b2、如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,則判斷所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性是否相同。
其中,如果抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,則進(jìn)一步判斷所述第一歷史頁(yè)面中的該頁(yè)面標(biāo)簽與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性是否相同,以判斷該相同頁(yè)面標(biāo)簽下的數(shù)據(jù)是否發(fā)生了變化。
b3、如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性相同,則確定所述第一歷史頁(yè)面可用。
b4、如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中不存在,或者如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性不相同,則確定所述第一歷史頁(yè)面不可用。
其中,如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性相同,則相同頁(yè)面標(biāo)簽下第一歷史頁(yè)面和待抓取頁(yè)面的數(shù)據(jù)未發(fā)生變化,因此可以使用第一歷史頁(yè)面來獲得目標(biāo)頁(yè)面數(shù)據(jù),即第一歷史頁(yè)面可用。如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中不存在,則所述第一歷史頁(yè)面不可用。如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,但所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性不相同,也就是第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽下的數(shù)據(jù)發(fā)生了變化,則所述第一歷史頁(yè)面不可用。
步驟S202對(duì)每個(gè)第一歷史頁(yè)面都進(jìn)行可用性檢測(cè),檢測(cè)結(jié)果可能是所有第一歷史頁(yè)面都可用,也可能只有部分第一歷史頁(yè)面可用,也可能都不可用。
步驟S203,如果所述第一歷史頁(yè)面可用,解析可用的第一歷史頁(yè)面得到第一目標(biāo)頁(yè)面數(shù)據(jù)。
步驟S204,如果所述第一歷史頁(yè)面不可用,根據(jù)不可用的第一歷史頁(yè)面對(duì)應(yīng)的統(tǒng)一資源定位符URL簇,以及歷史抓取數(shù)據(jù)中不存在所述第一歷史頁(yè)面的統(tǒng)一資源定位符URL簇,下載對(duì)應(yīng)的頁(yè)面進(jìn)行解析,得到第二目標(biāo)頁(yè)面數(shù)據(jù)。
其中,可用的第一歷史頁(yè)面直接用于抓取第一目標(biāo)頁(yè)面數(shù)據(jù),也就是歷史抓取數(shù)據(jù)中如果有與抓取任務(wù)的URL簇對(duì)應(yīng)的且可用的第一歷史頁(yè)面,則無需再重新抓取這部分URL簇對(duì)應(yīng)的頁(yè)面,以免構(gòu)成頁(yè)面的重復(fù)抓取。對(duì)于歷史抓取數(shù)據(jù)中不存在對(duì)應(yīng)的所述第一歷史頁(yè)面的抓取任務(wù)中的URL簇,以及雖然歷史抓取數(shù)據(jù)中存在對(duì)應(yīng)的第一歷史頁(yè)面但對(duì)應(yīng)的第一歷史頁(yè)面不可用的URL簇,通過網(wǎng)絡(luò)下載這些URL簇對(duì)應(yīng)的頁(yè)面進(jìn)行解析,也就是抓取這些URL簇對(duì)應(yīng)的頁(yè)面,得到第二目標(biāo)頁(yè)面數(shù)據(jù)。所述第一目標(biāo)頁(yè)面數(shù)據(jù)和所述第二頁(yè)面目標(biāo)數(shù)據(jù)組成抓取任務(wù)的目標(biāo)頁(yè)面數(shù)據(jù)。
其中,由于網(wǎng)絡(luò)頁(yè)面的變化通常很頻繁,與當(dāng)前時(shí)間間隔時(shí)間過長(zhǎng)的歷史頁(yè)面可能與當(dāng)前的頁(yè)面已截然不同,同時(shí)為了降低歷史抓取數(shù)據(jù)存儲(chǔ)量,節(jié)省數(shù)據(jù)庫(kù)空間,在抓取任務(wù)的配置信息中加入歷史頁(yè)面有效時(shí)間,歷史抓取數(shù)據(jù)中在歷史頁(yè)面有效時(shí)間之內(nèi)的第一歷史頁(yè)面才有可能被用于抓取第一目標(biāo)頁(yè)面數(shù)據(jù),相應(yīng)地,步驟S202在第二種可能的實(shí)施方式中,包括:
c1、判斷所述第一歷史頁(yè)面是否在歷史頁(yè)面有效時(shí)間內(nèi);
c2、如果所述第一歷史頁(yè)面在歷史頁(yè)面有效時(shí)間內(nèi),預(yù)解析所述第一歷史頁(yè)面,判斷抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中是否存在;
c3、如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,判斷所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性是否相同;
c4、如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性相同,則確定所述第一歷史頁(yè)面可用;
c5、如果第一歷史頁(yè)面不在歷史頁(yè)面有效時(shí)間內(nèi),或者所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中不存在,或者如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性不相同,則確定所述第一歷史頁(yè)面不可用。
其中,與步驟S202的第一種可能的實(shí)施方式相比,先判斷所述第一歷史頁(yè)面是否在歷史頁(yè)面有效時(shí)間內(nèi),如果第一歷史頁(yè)面不在歷史頁(yè)面有效時(shí)間內(nèi),則確定所述第一歷史頁(yè)面不可用,如果第一歷史頁(yè)面在有效時(shí)間內(nèi),才執(zhí)行步驟c2至c4。例如,歷史頁(yè)面有效時(shí)間為3天,如果第一歷史頁(yè)面不是3天內(nèi)的歷史頁(yè)面,則該第一歷史頁(yè)面不可用。
圖3為本申請(qǐng)一示例性實(shí)施例示出的一種網(wǎng)絡(luò)爬蟲數(shù)據(jù)抓取方法的流程示意圖,如圖3所示,所述方法包括:
步驟S301,定時(shí)檢測(cè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率,計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)并存儲(chǔ),其中,w為網(wǎng)絡(luò)帶寬使用率;
步驟S302,當(dāng)接收到抓取任務(wù)時(shí),根據(jù)抓取任務(wù)的配置信息在歷史抓取數(shù)據(jù)中查詢是否存在第一歷史頁(yè)面,所述配置信息包括新抓取任務(wù)的統(tǒng)一資源定位符URL簇,所述歷史抓取數(shù)據(jù)包括執(zhí)行歷史抓取任務(wù)所下載的歷史頁(yè)面,所述第一歷史頁(yè)面為與所述新抓取任務(wù)的配置信息對(duì)應(yīng)的歷史頁(yè)面;
步驟S303,如果存在所述第一歷史頁(yè)面,檢測(cè)所述第一歷史頁(yè)面是否可用;
步驟S304,如果所述第一歷史頁(yè)面可用,解析可用的第一歷史頁(yè)面得到第一目標(biāo)頁(yè)面數(shù)據(jù);
步驟S305,如果所述第一歷史頁(yè)面不可用,根據(jù)不可用的第一歷史頁(yè)面對(duì)應(yīng)的統(tǒng)一資源定位符URL簇,以及歷史抓取數(shù)據(jù)中不存在所述第一歷史頁(yè)面的統(tǒng)一資源定位符URL簇,形成第二抓取任務(wù);
步驟S306,根據(jù)所述網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性;
步驟S307,根據(jù)各個(gè)網(wǎng)絡(luò)爬蟲的可用性確定執(zhí)行所述第二抓取任務(wù)的網(wǎng)絡(luò)爬蟲;
步驟S308,執(zhí)行所述第二抓取任務(wù)的網(wǎng)絡(luò)爬蟲抓取第二目標(biāo)頁(yè)面數(shù)據(jù),其中,第一目標(biāo)頁(yè)面數(shù)據(jù)和第二目標(biāo)頁(yè)面數(shù)據(jù)組成所述抓取任務(wù)的目標(biāo)頁(yè)面數(shù)據(jù)。
其中,所述步驟S301包括:
d1,定時(shí)采集預(yù)設(shè)次數(shù)網(wǎng)絡(luò)帶寬使用率;
d2,計(jì)算網(wǎng)絡(luò)帶寬使用率均值E(w)=和D(w)=E[w-E(w)]2并存儲(chǔ),其中n為預(yù)設(shè)次數(shù)。
其中,定時(shí)檢測(cè)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用情況,所述定時(shí)可以為周期性間隔一定的時(shí)間,例如,每20min檢測(cè)一次,也可以根據(jù)爬蟲系統(tǒng)的運(yùn)行情況固定多個(gè)時(shí)間點(diǎn)進(jìn)行檢測(cè),例如每天中每個(gè)小時(shí)的第10min、第25min、第30min、第40min和第60min進(jìn)行檢測(cè)。每次檢測(cè)時(shí),采集預(yù)設(shè)次數(shù)網(wǎng)絡(luò)帶寬使用率,以計(jì)算網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w),對(duì)網(wǎng)絡(luò)帶寬使用率的采集可以使用常規(guī)的網(wǎng)絡(luò)帶寬使用率采集方法,需要說明的是,在設(shè)置預(yù)設(shè)次數(shù)時(shí),應(yīng)使采集預(yù)設(shè)次數(shù)的時(shí)間小于或等于檢測(cè)間隔時(shí)間。設(shè)
將計(jì)算得到的每個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)存儲(chǔ)于爬蟲系統(tǒng)中,每個(gè)網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)與檢測(cè)時(shí)間對(duì)應(yīng)。
其中,步驟S303,在第一種可能的實(shí)施方式中,包括:
預(yù)解析所述第一歷史頁(yè)面,判斷抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中是否存在;
如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,判斷所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性是否相同;
如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性相同,則確定所述第一歷史頁(yè)面可用;
如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中不存在,或者如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性不相同,則確定所述第一歷史頁(yè)面不可用。
其中,所述配置信息還可以包括歷史頁(yè)面有效時(shí)間,相應(yīng)地,所述步驟S303,在第二種可能的實(shí)施方式中,包括:
判斷所述第一歷史頁(yè)面是否在歷史頁(yè)面有效時(shí)間內(nèi);
如果所述第一歷史頁(yè)面在歷史頁(yè)面有效時(shí)間內(nèi),預(yù)解析所述第一歷史頁(yè)面,判斷抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中是否存在;
如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,判斷所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性是否相同;
如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性相同,則確定所述第一歷史頁(yè)面可用;
如果第一歷史頁(yè)面不在歷史頁(yè)面有效時(shí)間內(nèi),或者所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中不存在,或者如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性不相同,則確定所述第一歷史頁(yè)面不可用。
其中,通過步驟S303確定可用的第一歷史頁(yè)面后,對(duì)可用的第一歷史頁(yè)面,直接進(jìn)行解析得到第一目標(biāo)頁(yè)面數(shù)據(jù),從而可以避免頁(yè)面的重復(fù)抓取,節(jié)省系統(tǒng)資源。
對(duì)于不可用的第一歷史頁(yè)面,將其對(duì)應(yīng)的抓取任務(wù)中的URL簇,以及在歷史抓取數(shù)據(jù)中查找不到第一歷史頁(yè)面的抓取任務(wù)中的URL簇,根據(jù)這些URL簇形成第二抓取任務(wù),也就是第二抓取任務(wù)以這些URL簇為目標(biāo)URL簇,后續(xù)將只根據(jù)這些URL簇抓取對(duì)應(yīng)的第二目標(biāo)頁(yè)面數(shù)據(jù)。
其中,步驟S306,所述根據(jù)所述網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性,包括:
提取當(dāng)前時(shí)間之前預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方 差D(w);
根據(jù)預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w),使用樸素貝葉斯分類算法計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性概率和不可用性概率。
相應(yīng)地,步驟S307,根據(jù)所述可用性確定執(zhí)行任務(wù)的網(wǎng)絡(luò)爬蟲,包括:
比較網(wǎng)絡(luò)爬蟲的可用性概率與不可用性概率;
如果網(wǎng)絡(luò)爬蟲的可用性概率大于不可用性概率,確定所述網(wǎng)絡(luò)爬蟲可用,否則,確定所述網(wǎng)絡(luò)爬蟲不可用;
對(duì)可用的網(wǎng)絡(luò)爬蟲,按可用性概率由大到小的順序選擇執(zhí)行任務(wù)的網(wǎng)絡(luò)爬蟲。
在步驟S307確定執(zhí)行第二抓取任務(wù)的網(wǎng)絡(luò)爬蟲后,使用這些網(wǎng)絡(luò)爬蟲抓取第二目標(biāo)頁(yè)面數(shù)據(jù)。第一目標(biāo)頁(yè)面數(shù)據(jù)和第二目標(biāo)頁(yè)面數(shù)據(jù)組成所述抓取任務(wù)的目標(biāo)頁(yè)面數(shù)據(jù)。
本申請(qǐng)實(shí)施例提供的網(wǎng)絡(luò)爬蟲數(shù)據(jù)抓取方法,爬蟲系統(tǒng)保存抓取過的歷史頁(yè)面全頁(yè)保存于歷史抓取數(shù)據(jù),當(dāng)有抓取任務(wù)進(jìn)入時(shí),判斷歷史抓取數(shù)據(jù)中是否存在與抓取任務(wù)的URL簇對(duì)應(yīng)的歷史頁(yè)面,如果存在對(duì)應(yīng)的歷史頁(yè)面且存在的歷史頁(yè)面可用,則對(duì)可用的歷史頁(yè)面直接提取第一目標(biāo)頁(yè)面數(shù)據(jù),而不需對(duì)這部分歷史頁(yè)面重復(fù)抓取,從而節(jié)省系統(tǒng)資源。對(duì)于不可用的歷史頁(yè)面對(duì)應(yīng)的URL簇,及歷史抓取數(shù)據(jù)中不存在對(duì)應(yīng)歷史頁(yè)面的URL簇,將這些URL簇作為目標(biāo)URL簇,由網(wǎng)絡(luò)爬蟲抓取對(duì)應(yīng)的頁(yè)面并得到第二目標(biāo)頁(yè)面數(shù)據(jù),由此完成所有目標(biāo)頁(yè)面數(shù)據(jù)的抓取。同時(shí),區(qū)別于通常使用所有網(wǎng)絡(luò)爬蟲或者隨機(jī)選擇網(wǎng)絡(luò)爬蟲完成抓取任務(wù)的情況,先定時(shí)檢測(cè)所有網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率,計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)并存儲(chǔ),然后根據(jù)E(w)和D(w)計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性,也就是網(wǎng)絡(luò)帶寬未飽和的網(wǎng)絡(luò)爬蟲,并對(duì)可用的網(wǎng)絡(luò)爬蟲,按可用性概率由大到小的順序選擇執(zhí)行任務(wù)的網(wǎng)絡(luò)爬蟲,以選擇更好的網(wǎng)絡(luò)爬蟲來執(zhí)行抓取任務(wù),從而合理分配網(wǎng)絡(luò)爬蟲資源,提高任務(wù)抓取效率。
通過以上的方法實(shí)施例的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,并存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)智能設(shè)備執(zhí)行本申請(qǐng)各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、磁碟或者光盤等各種可以存儲(chǔ)數(shù)據(jù)和程序代碼的介質(zhì)。
圖4為本申請(qǐng)一示例性實(shí)施例示出的一種網(wǎng)絡(luò)爬蟲抓取任務(wù)分配裝置的框圖。如圖4所示,所述裝置包括:
網(wǎng)絡(luò)帶寬使用率處理單元U401,用于定時(shí)檢測(cè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率,計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)并存儲(chǔ),其中,w為網(wǎng)絡(luò)帶寬使用率;
爬蟲可用性計(jì)算單元U402,用于當(dāng)接收到抓取任務(wù)時(shí),根據(jù)所述網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性;
第一爬蟲確定單元U403,用于根據(jù)所述可用性確定執(zhí)行任務(wù)的網(wǎng)絡(luò)爬蟲。
其中,所述網(wǎng)絡(luò)帶寬使用率處理單元,包括:
網(wǎng)絡(luò)帶寬使用率采集模塊,用于定時(shí)采集預(yù)設(shè)次數(shù)網(wǎng)絡(luò)帶寬使用率;
均值方差計(jì)算模塊,用于計(jì)算網(wǎng)絡(luò)帶寬使用率均值和D(w)=E[w-E(w)]2并存儲(chǔ),其中n為預(yù)設(shè)次數(shù)。
其中,所述爬蟲可用性計(jì)算單元,包括:
均值方差提取模塊,提取當(dāng)前時(shí)間之前預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w);
概率計(jì)算模塊,用于根據(jù)預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w),使用樸素貝葉斯分類算法計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性概率和不可用性概率。
其中,所述第一爬蟲確定單元,包括:
比較模塊,用于比較網(wǎng)絡(luò)爬蟲的可用性概率與不可用性概率;
可用性確定模塊,如果網(wǎng)絡(luò)爬蟲的可用性概率大于不可用性概率,確定所述網(wǎng)絡(luò)爬蟲可用,否則,確定所述網(wǎng)絡(luò)爬蟲不可用;
選擇模塊,用于對(duì)可用的網(wǎng)絡(luò)爬蟲,按可用性概率由大到小的順序選擇執(zhí)行任務(wù)的網(wǎng)絡(luò)爬蟲。
圖5為本申請(qǐng)一示例性實(shí)施例示出的一種網(wǎng)絡(luò)爬蟲數(shù)據(jù)抓取裝置的框圖。如圖5所示,所述裝置包括:
第一歷史頁(yè)面查詢單元U501,用于當(dāng)接收到抓取任務(wù)時(shí),根據(jù)抓取任務(wù)的配置信息在歷史抓取數(shù)據(jù)中查詢是否存在第一歷史頁(yè)面,所述配置信息包括新抓取任務(wù)的統(tǒng)一資源定位符URL簇,所述歷史抓取數(shù)據(jù)包括執(zhí)行歷史抓取任務(wù)所下載的歷史頁(yè)面,所述第一歷史頁(yè)面為與所述新抓取任務(wù)的配置信息對(duì)應(yīng)的歷史頁(yè)面;
歷史頁(yè)面可用性檢測(cè)單元U502,用于如果存在所述第一歷史頁(yè)面,檢測(cè)所述第一歷史頁(yè)面是否可用;
第一解析單元U503,用于如果所述第一歷史頁(yè)面可用,解析可用的第一歷史頁(yè)面得到第一目標(biāo)頁(yè)面數(shù)據(jù);
第一抓取單元U504,用于如果所述第一歷史頁(yè)面不可用,根據(jù)所述不可用的第一歷史頁(yè)面對(duì)應(yīng)的統(tǒng)一資源定位符URL簇,以及歷史抓取數(shù)據(jù)中不存在所述第一歷史頁(yè)面的統(tǒng)一資源定位符URL簇,下載對(duì)應(yīng)的頁(yè)面進(jìn)行解析,得到第二目標(biāo)頁(yè)面數(shù)據(jù)。
其中,所述歷史頁(yè)面可用性檢測(cè)單元,在第一種可能的實(shí)施方式中,包括:
第一判斷模塊,用于預(yù)解析所述第一歷史頁(yè)面,判斷抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中是否存在;
第二判斷模塊,用于如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,判斷所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性是否相同;
可用確定模塊,用于如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性相同,則確定所述第一歷史頁(yè)面可用;
不可用確定模塊,用于如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中不存在,或者如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性不相同,則所述第一歷史頁(yè)面不可用。
其中,所述配置信息還包括歷史頁(yè)面有效時(shí)間,所述歷史頁(yè)面可用性檢測(cè)單元,在第二種可能的實(shí)施方式中,包括:
第三判斷模塊,用于判斷所述第一歷史頁(yè)面是否在歷史頁(yè)面有效時(shí)間內(nèi);
第四判斷模塊,用于如果所述第一歷史頁(yè)面在歷史頁(yè)面有效時(shí)間內(nèi),預(yù)解析所述第一歷史頁(yè)面,判斷抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中是否存在;
第五判斷模塊,用于如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,判斷所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性是否相同;
可用確定模塊,用于如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性相同,則確定所述第一歷史頁(yè)面可用;
不可用確定模塊,用于如果第一歷史頁(yè)面不在歷史頁(yè)面有效時(shí)間內(nèi),或者所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中不存在,或者如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性不相同,則確定所述第一歷史頁(yè)面不可用。
圖6為本申請(qǐng)一示例性實(shí)施例示出的另一種網(wǎng)絡(luò)爬蟲數(shù)據(jù)抓取裝置的框圖。如圖6所示,所述裝置包括:
網(wǎng)絡(luò)帶寬使用率處理單元U601,用于定時(shí)檢測(cè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率,計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)并存儲(chǔ),其中,w為網(wǎng)絡(luò)帶寬使用率;
第一歷史頁(yè)面查詢單元U602,用于當(dāng)接收到抓取任務(wù)時(shí),根據(jù)抓取任務(wù)的配置信息在歷史抓取數(shù)據(jù)中查詢是否存在第一歷史頁(yè)面,所述配置信息包括新抓取任務(wù)的統(tǒng)一資源定位符URL簇,所述歷史抓取數(shù)據(jù)包括執(zhí)行歷史抓取任務(wù)所下載的歷史頁(yè)面,所述第一歷史頁(yè)面為與所述新抓取任務(wù)的配置信息對(duì)應(yīng)的歷史頁(yè)面;
歷史頁(yè)面可用性檢測(cè)單元U603,用于如果存在所述第一歷史頁(yè)面,檢測(cè)所述第一歷史頁(yè)面是否可用;
第一解析單元U604,用于如果所述第一歷史頁(yè)面可用,解析可用的第一歷史頁(yè)面得到第一目標(biāo)頁(yè)面數(shù)據(jù);
第二抓取任務(wù)生成單元U605,用于如果所述第一歷史頁(yè)面不可用,根據(jù)不可用的第一歷史頁(yè)面對(duì)應(yīng)的統(tǒng)一資源定位符URL簇,以及歷史抓取數(shù)據(jù)中不存在所述第一歷史頁(yè)面的統(tǒng)一資源定位符URL簇,形成第二抓取任務(wù);
爬蟲可用性計(jì)算單元U606,用于根據(jù)所述網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w)計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性;
第二爬蟲確定單元U607,用于根據(jù)各個(gè)網(wǎng)絡(luò)爬蟲的可用性確定執(zhí)行所述第二抓取任務(wù)的網(wǎng)絡(luò)爬蟲;
第二抓取單元U608,用于執(zhí)行所述第二抓取任務(wù)的網(wǎng)絡(luò)爬蟲抓取第二目標(biāo)頁(yè)面數(shù)據(jù),其中,第一目標(biāo)頁(yè)面數(shù)據(jù)和第二目標(biāo)頁(yè)面數(shù)據(jù)組成所述抓取任務(wù)的目標(biāo)頁(yè)面數(shù)據(jù)。
其中,所述網(wǎng)絡(luò)帶寬使用率處理單元,包括:
網(wǎng)絡(luò)帶寬使用率采集模塊,用于定時(shí)采集預(yù)設(shè)次數(shù)網(wǎng)絡(luò)帶寬使用率;
均值方差計(jì)算模塊,用于計(jì)算網(wǎng)絡(luò)帶寬使用率均值和D(w)=E[w-E(w)]2并存儲(chǔ),其中n為預(yù)設(shè)次數(shù)。
其中,所述歷史頁(yè)面可用性檢測(cè)單元,在第一種可能的實(shí)施方式中,包括:
第一判斷模塊,用于預(yù)解析所述第一歷史頁(yè)面,判斷抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中是否存在;
第二判斷模塊,用于如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,判斷所述第一 歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性是否相同;
可用確定模塊,用于如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性相同,則確定所述第一歷史頁(yè)面可用;
不可用確定模塊,用于如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中不存在,或者如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性不相同,則所述第一歷史頁(yè)面不可用。
其中,所述配置信息還包括歷史頁(yè)面有效時(shí)間,所述歷史頁(yè)面可用性檢測(cè)單元,在第二種可能的實(shí)施方式中,包括:
第三判斷模塊,用于判斷所述第一歷史頁(yè)面是否在歷史頁(yè)面有效時(shí)間內(nèi);
第四判斷模塊,用于如果所述第一歷史頁(yè)面在歷史頁(yè)面有效時(shí)間內(nèi),預(yù)解析所述第一歷史頁(yè)面,判斷抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中是否存在;
第五判斷模塊,用于如果所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中存在,判斷所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性是否相同;
可用確定模塊,用于如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性相同,則確定所述第一歷史頁(yè)面可用;
不可用確定模塊,用于如果第一歷史頁(yè)面不在歷史頁(yè)面有效時(shí)間內(nèi),或者所述頁(yè)面標(biāo)簽在所述第一歷史頁(yè)面中不存在,或者如果所述第一歷史頁(yè)面中所述頁(yè)面標(biāo)簽的屬性與抓取任務(wù)中目標(biāo)頁(yè)面數(shù)據(jù)所在的頁(yè)面標(biāo)簽的屬性不相同,則確定所述第一歷史頁(yè)面不可用。
其中,所述爬蟲可用性計(jì)算單元,包括:
均值方差提取模塊,提取當(dāng)前時(shí)間之前預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w);
概率計(jì)算模塊,用于根據(jù)預(yù)設(shè)時(shí)間長(zhǎng)度內(nèi)各個(gè)網(wǎng)絡(luò)爬蟲的網(wǎng)絡(luò)帶寬使用率均值E(w)和方差D(w),使用樸素貝葉斯分類算法計(jì)算各個(gè)網(wǎng)絡(luò)爬蟲的可用性概率和不可用性概率。
其中,所述第二爬蟲確定單元,包括:
比較模塊,用于比較網(wǎng)絡(luò)爬蟲的可用性概率與不可用性概率;
可用性確定模塊,如果網(wǎng)絡(luò)爬蟲的可用性概率大于不可用性概率,確定所述網(wǎng)絡(luò)爬蟲可用,否則,確定所述網(wǎng)絡(luò)爬蟲不可用;
選擇模塊,用于對(duì)可用的網(wǎng)絡(luò)爬蟲,按可用性概率由大到小的順序選擇執(zhí)行任務(wù)的網(wǎng)絡(luò)爬蟲。
為了描述的方便,描述以上裝置時(shí)以功能分為各種單元分別描述。當(dāng)然,在實(shí)施本申請(qǐng)時(shí)可以把各單元的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。
本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于裝置或系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述得比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所描述的裝置及系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
需要說明的是,在本文中,諸如“第一”和“第二”等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者逆序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上所述僅是本申請(qǐng)的具體實(shí)施方式,使本領(lǐng)域技術(shù)人員能夠理解或?qū)崿F(xiàn)本申請(qǐng)。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請(qǐng)的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本申請(qǐng)將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。