一種網(wǎng)絡(luò)爬蟲系統(tǒng)及網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法
【專利摘要】本發(fā)明公開一種網(wǎng)絡(luò)爬蟲系統(tǒng)及網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,所述方法包括:A.根據(jù)不同的內(nèi)容和網(wǎng)站特點(diǎn),對爬取內(nèi)容進(jìn)行細(xì)粒度切分并分別制作各爬蟲解析模板文件,設(shè)置網(wǎng)絡(luò)爬蟲分別結(jié)合各爬蟲解析模板文件形成用于執(zhí)行爬取任務(wù)的各采集模塊;B.多個節(jié)點(diǎn)服務(wù)器上分別部署所述網(wǎng)絡(luò)爬蟲,每個節(jié)點(diǎn)服務(wù)器分別設(shè)置有用于調(diào)度爬取任務(wù)的調(diào)度器;C.所述調(diào)度器按照預(yù)先定義的調(diào)度策略調(diào)用關(guān)聯(lián)的采集模塊執(zhí)行爬取任務(wù)進(jìn)行數(shù)據(jù)采集。本發(fā)明通過對爬取內(nèi)容進(jìn)行細(xì)粒度切分,實(shí)現(xiàn)任務(wù)的高并發(fā)執(zhí)行,采取負(fù)載均衡策略,充分利用了服務(wù)器資源,爬取效率得到明顯提高,而且避免了單機(jī)故障造成的系統(tǒng)可靠性不高的問題,保障了系統(tǒng)高可靠性運(yùn)行。
【專利說明】一種網(wǎng)絡(luò)爬蟲系統(tǒng)及網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及搜索引擎【技術(shù)領(lǐng)域】,尤其涉及一種網(wǎng)絡(luò)爬蟲系統(tǒng)及網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)信息的爆炸式增長,傳統(tǒng)的網(wǎng)絡(luò)爬蟲采集數(shù)據(jù)的方式已經(jīng)逐漸顯示出劣勢。傳統(tǒng)的網(wǎng)絡(luò)爬蟲采集數(shù)據(jù)時任務(wù)沒有細(xì)粒度的切分,耗時比較長,服務(wù)器CPU、內(nèi)存和網(wǎng)絡(luò)帶寬的限制,數(shù)據(jù)爬取效率比較低下,而且容易出現(xiàn)單點(diǎn)故障。
[0003]因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
【發(fā)明內(nèi)容】
[0004]鑒于上述現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種網(wǎng)絡(luò)爬蟲系統(tǒng)及網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,旨在解決目前網(wǎng)絡(luò)爬蟲采集數(shù)據(jù)方法效率低,耗時長的問題。
[0005]本發(fā)明的技術(shù)方案如下:
一種網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其中,所述方法包括:
A、根據(jù)不同的內(nèi)容和網(wǎng)站特點(diǎn),對待爬取內(nèi)容進(jìn)行細(xì)粒度切分并根據(jù)切分后內(nèi)容分別制作各爬蟲解析模板文件,設(shè)置網(wǎng)絡(luò)爬蟲分別結(jié)合各爬蟲解析模板文件形成用于執(zhí)行爬取任務(wù)的各采集模塊;
B、多個節(jié)點(diǎn)服務(wù)器上分別部署所述網(wǎng)絡(luò)爬蟲,每個節(jié)點(diǎn)服務(wù)器分別設(shè)置有用于調(diào)度爬取任務(wù)的調(diào)度器;
C、所述調(diào)度器按照預(yù)先定義的調(diào)度策略調(diào)用關(guān)聯(lián)的采集模塊執(zhí)行爬取任務(wù)進(jìn)行數(shù)據(jù)米集。
[0006]所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其中,所述步驟A中根據(jù)不同的內(nèi)容和網(wǎng)站特點(diǎn),對待爬取內(nèi)容進(jìn)行細(xì)粒度切分具體為:
當(dāng)所述待爬取內(nèi)容包括多個類型相同的網(wǎng)站時,將多個類型相同的網(wǎng)站切分為單個網(wǎng)
站;
或者,當(dāng)單個網(wǎng)站包含多個內(nèi)容不同的版塊時,將單個網(wǎng)站切分為不同的版塊;
或者,當(dāng)單一板塊中包含多個頁面時,將單一板塊切分為多個頁面。
[0007]所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其中,所述切分后的內(nèi)容之間無關(guān)聯(lián)性,所述各采集模塊分別對應(yīng)關(guān)聯(lián)各爬取任務(wù)。
[0008]所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其中,所述各爬取任務(wù)之間無關(guān)聯(lián)性,每一爬取任務(wù)通過一獨(dú)立線程完成。
[0009]所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其中,所述預(yù)先定義的調(diào)度策略包括: 指定所述爬取任務(wù)在一固定的節(jié)點(diǎn)服務(wù)器上執(zhí)行;
按照所述節(jié)點(diǎn)服務(wù)器節(jié)點(diǎn)等比原則在多個節(jié)點(diǎn)服務(wù)器中隨機(jī)分配爬取任務(wù);
根據(jù)所述多個節(jié)點(diǎn)服務(wù)器當(dāng)前的資源信息,優(yōu)先選擇資源利用率低的節(jié)點(diǎn)服務(wù)器執(zhí)行爬取任務(wù)。
[0010]所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其中,所述預(yù)先定義的調(diào)度策略具體設(shè)置為:
預(yù)先設(shè)置并存儲一信息列表,所述信息列表中存儲有所述節(jié)點(diǎn)服務(wù)器的IP、端口信息、爬取任務(wù)信息;讀取所述信息列表獲取爬取任務(wù)與節(jié)點(diǎn)服務(wù)器的對應(yīng)關(guān)系,按照所述對應(yīng)關(guān)系在相應(yīng)的節(jié)點(diǎn)服務(wù)器上的執(zhí)行爬取任務(wù);
設(shè)置所述各節(jié)點(diǎn)服務(wù)器節(jié)點(diǎn)權(quán)重均為1,按照該等比原則在多個節(jié)點(diǎn)服務(wù)器中隨機(jī)分配爬取任務(wù);
定期獲取所述多個節(jié)點(diǎn)服務(wù)器當(dāng)前的CPU、內(nèi)存資源信息,根據(jù)所獲取的資源信息優(yōu)先選擇資源利用率低的節(jié)點(diǎn)服務(wù)器執(zhí)行爬取任務(wù),若存在資源利用率相同的節(jié)點(diǎn)服務(wù)器,則在該類節(jié)點(diǎn)服務(wù)器中隨機(jī)分配爬取任務(wù)。
[0011]所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其中,所述方法還包括:設(shè)置一用于保存爬取任務(wù)信息的數(shù)據(jù)庫,所述數(shù)據(jù)庫分別與所述多個節(jié)點(diǎn)服務(wù)器相連接,所述節(jié)點(diǎn)服務(wù)器上的各調(diào)度器通過各自獨(dú)立的線程定期檢查所述數(shù)據(jù)庫。
[0012]所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其中,所述步驟C中所述調(diào)度器按照預(yù)先定義的調(diào)度策略調(diào)用關(guān)聯(lián)的采集模塊之前還包括:
所述節(jié)點(diǎn)服務(wù)器第一次運(yùn)行時,將所獲取的爬取任務(wù)信息初始化到所述數(shù)據(jù)庫。
[0013]所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其中,所述步驟C具體為:到爬取任務(wù)觸發(fā)時間時,按照預(yù)先定義的調(diào)度策略,所述服務(wù)器節(jié)點(diǎn)的調(diào)度器觸發(fā)自己的觸發(fā)器獲取數(shù)據(jù)庫鎖,獲取所述數(shù)據(jù)庫鎖的調(diào)度器調(diào)用關(guān)聯(lián)的采集模塊,網(wǎng)絡(luò)爬蟲加載所述爬蟲解析模板文件采集數(shù)據(jù),同時更新爬取任務(wù)狀態(tài)并持久化到所述數(shù)據(jù)庫。
[0014]一種具有如上所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度的系統(tǒng),其中,所述系統(tǒng)包括: 數(shù)據(jù)庫:分別所述節(jié)點(diǎn)服務(wù)器連接用于保存爬取任務(wù)信息;
節(jié)點(diǎn)服務(wù)器,用于執(zhí)行網(wǎng)絡(luò)爬蟲爬取任務(wù);所述節(jié)點(diǎn)服務(wù)器包括:
采集模塊,通過所述爬蟲解析模板文件形成用于具體執(zhí)行爬取任務(wù)并進(jìn)行數(shù)據(jù)采集; 調(diào)度器,用于按照預(yù)先定義的調(diào)度策略調(diào)用關(guān)聯(lián)的采集模塊執(zhí)行爬取任務(wù)。
[0015]有益效果:本發(fā)明提供一種網(wǎng)絡(luò)爬蟲系統(tǒng)及網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,通過對爬取內(nèi)容進(jìn)行細(xì)粒度切分,實(shí)現(xiàn)任務(wù)的高并發(fā)執(zhí)行,采取負(fù)載均衡策略,充分利用了服務(wù)器資源,提高了爬取數(shù)據(jù)的速度,爬取效率得到明顯提高,而且避免了單機(jī)故障造成的系統(tǒng)可靠性不高的問題,保障了系統(tǒng)高可靠性運(yùn)行。
【專利附圖】
【附圖說明】
[0016]圖1為本發(fā)明的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法較佳實(shí)施例的方法流程圖。
[0017]圖2為本發(fā)明的網(wǎng)絡(luò)爬蟲系統(tǒng)較佳實(shí)施例的邏輯架構(gòu)圖。
[0018]圖3為圖2的節(jié)點(diǎn)服務(wù)器爬蟲結(jié)構(gòu)示意圖。
[0019]圖4為圖2的節(jié)點(diǎn)服務(wù)器節(jié)點(diǎn)調(diào)度結(jié)構(gòu)示意圖。
[0020]圖5為圖1中步驟S300的具體實(shí)施例的方法流程圖。
【具體實(shí)施方式】[0021]本發(fā)明提供一種網(wǎng)絡(luò)爬蟲系統(tǒng)及網(wǎng)絡(luò)爬蟲的多任務(wù)執(zhí)行和調(diào)度方法,這里所述的網(wǎng)絡(luò)爬蟲也即不間斷地執(zhí)行某項任務(wù)的人工智能軟件程序。為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下對本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0022]如圖1所示的一種網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法的較佳實(shí)施例,其中,所述方法包括:
S100、根據(jù)不同的內(nèi)容和網(wǎng)站特點(diǎn),對待爬取內(nèi)容進(jìn)行細(xì)粒度切分并根據(jù)切分后內(nèi)容分別制作各爬蟲解析模板文件,設(shè)置網(wǎng)絡(luò)爬蟲分別結(jié)合各爬蟲解析模板文件形成用于執(zhí)行爬取任務(wù)的各采集模塊。
[0023]其中,根據(jù)不同的內(nèi)容和網(wǎng)站特點(diǎn),對待爬取內(nèi)容進(jìn)行細(xì)粒度切分通俗的講是將要爬取的比較大的內(nèi)容分離為若干個小的內(nèi)容,更為具體的:當(dāng)所述待爬取內(nèi)容包括類型相同的多個網(wǎng)站時,將類型相同的多個相同的網(wǎng)站切分為單個網(wǎng)站,例如優(yōu)酷、愛奇藝、土豆網(wǎng)站都有電影,采集這3個網(wǎng)站的電影,將這3個網(wǎng)站的電影與相關(guān)信息進(jìn)行分開采集;或者,當(dāng)單個網(wǎng)站包含多個內(nèi)容不同的版塊時,將單個網(wǎng)站切分為不同的版塊;或者,當(dāng)單一板塊中包含多個頁面時,將單一板塊切分為多個頁面。例如某網(wǎng)站上有資訊,資訊又分為國際、國內(nèi)、社會、娛樂等類別??梢詫①Y訊這個大版塊分為國際、國內(nèi)、社會、娛樂等小版塊進(jìn)行獨(dú)立采集。
[0024]由于所述切分后的內(nèi)容之間無關(guān)聯(lián)性,且所述各采集模塊分別對應(yīng)關(guān)聯(lián)各爬取任務(wù),因而所要執(zhí)行的各爬取任務(wù)之間也必然無關(guān)聯(lián)性。按照上述的方法將爬取內(nèi)容切分成細(xì)小內(nèi)容后,由獨(dú)立的任務(wù)進(jìn)行爬取且設(shè)定每一爬取任務(wù)通過一獨(dú)立線程完成,由于任務(wù)彼此之間無關(guān)聯(lián)性,在調(diào)度器的調(diào)度下可以同時執(zhí)行,即可具有并發(fā)執(zhí)行的特點(diǎn)。
[0025]較佳的是,所述爬蟲解析模板文件是一個xml文件,里面定義要爬取的內(nèi)容,利用xpath、xquery對內(nèi)容進(jìn)行抽取。
【權(quán)利要求】
1.一種網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其特征在于,所述方法包括: A、根據(jù)不同的內(nèi)容和網(wǎng)站特點(diǎn),對待爬取內(nèi)容進(jìn)行細(xì)粒度切分并根據(jù)切分后內(nèi)容分別制作各爬蟲解析模板文件,設(shè)置網(wǎng)絡(luò)爬蟲分別結(jié)合各爬蟲解析模板文件形成用于執(zhí)行爬取任務(wù)的各采集模塊; B、多個節(jié)點(diǎn)服務(wù)器上分別部署所述網(wǎng)絡(luò)爬蟲,每個節(jié)點(diǎn)服務(wù)器分別設(shè)置有用于調(diào)度爬取任務(wù)的調(diào)度器; C、所述調(diào)度器按照預(yù)先定義的調(diào)度策略調(diào)用關(guān)聯(lián)的采集模塊執(zhí)行爬取任務(wù)進(jìn)行數(shù)據(jù)米集。
2.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其特征在于,所述步驟A中根據(jù)不同的內(nèi)容和網(wǎng)站特點(diǎn),對待爬取內(nèi)容進(jìn)行細(xì)粒度切分具體為: 當(dāng)所述待爬取內(nèi)容包括多個類型相同的網(wǎng)站時,將多個類型相同的網(wǎng)站切分為單個網(wǎng)站; 或者,當(dāng)單個網(wǎng)站包含多個內(nèi)容不同的版塊時,將單個網(wǎng)站切分為不同的版塊; 或者,當(dāng)單一板塊中包含多個頁面時,將單一板塊切分為多個頁面。
3.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其特征在于,所述切分后的內(nèi)容之間無關(guān)聯(lián)性,所述各采集模塊分別對應(yīng)關(guān)聯(lián)各爬取任務(wù)。
4.根據(jù)權(quán)利要求3所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其特征在于,所述各爬取任務(wù)之間無關(guān)聯(lián)性,每一爬取任務(wù)通過一獨(dú)立線程完成。
5.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其特征在于,所述預(yù)先定義的調(diào)度策略包括: 指定所述爬取任務(wù)在一固定的節(jié)點(diǎn)服務(wù)器上執(zhí)行; 按照所述節(jié)點(diǎn)服務(wù)器節(jié)點(diǎn)等比原則在多個節(jié)點(diǎn)服務(wù)器中隨機(jī)分配爬取任務(wù); 根據(jù)所述多個節(jié)點(diǎn)服務(wù)器當(dāng)前的資源信息,優(yōu)先選擇資源利用率低的節(jié)點(diǎn)服務(wù)器執(zhí)行爬取任務(wù)。
6.根據(jù)權(quán)利要求5所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其特征在于,所述預(yù)先定義的調(diào)度策略具體設(shè)置為: 預(yù)先設(shè)置并存儲一信息列表,所述信息列表中存儲有所述節(jié)點(diǎn)服務(wù)器的IP、端口信息、爬取任務(wù)信息;讀取所述信息列表獲取爬取任務(wù)與節(jié)點(diǎn)服務(wù)器的對應(yīng)關(guān)系,按照所述對應(yīng)關(guān)系在相應(yīng)的節(jié)點(diǎn)服務(wù)器上的執(zhí)行爬取任務(wù); 設(shè)置所述各節(jié)點(diǎn)服務(wù)器節(jié)點(diǎn)權(quán)重均為1,按照該等比原則在多個節(jié)點(diǎn)服務(wù)器中隨機(jī)分配爬取任務(wù); 定期獲取所述多個節(jié)點(diǎn)服務(wù)器當(dāng)前的CPU、內(nèi)存資源信息,根據(jù)所獲取的資源信息優(yōu)先選擇資源利用率低的節(jié)點(diǎn)服務(wù)器執(zhí)行爬取任務(wù),若存在資源利用率相同的節(jié)點(diǎn)服務(wù)器,則在該類節(jié)點(diǎn)服務(wù)器中隨機(jī)分配爬取任務(wù)。
7.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其特征在于,所述方法還包括:設(shè)置一用于保存爬取任務(wù)信息的數(shù)據(jù)庫,所述數(shù)據(jù)庫分別與所述多個節(jié)點(diǎn)服務(wù)器相連接,所述節(jié)點(diǎn)服務(wù)器上的各調(diào)度器通過各自獨(dú)立的線程定期檢查所述數(shù)據(jù)庫。
8.根據(jù)權(quán)利要求7所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其特征在于,所述步驟C中所述調(diào)度器按照預(yù)先定義的調(diào)度策略調(diào)用關(guān)聯(lián)的采集模塊之前還包括:所述節(jié)點(diǎn)服務(wù)器第一次運(yùn)行時,將所獲取的爬取任務(wù)信息初始化到所述數(shù)據(jù)庫。
9.根據(jù)權(quán)利要求6或7所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度方法,其特征在于,所述步驟C具體為:到爬取任務(wù)觸發(fā)時間時,按照預(yù)先定義的調(diào)度策略,所述服務(wù)器節(jié)點(diǎn)的調(diào)度器觸發(fā)自己的觸發(fā)器獲取數(shù)據(jù)庫鎖,獲取所述數(shù)據(jù)庫鎖的調(diào)度器調(diào)用關(guān)聯(lián)的采集模塊,網(wǎng)絡(luò)爬蟲加載所述爬蟲解析模板文件采集數(shù)據(jù),同時更新爬取任務(wù)狀態(tài)并持久化到所述數(shù)據(jù)庫。
10.一種具有權(quán)利要求1-9任一項所述的網(wǎng)絡(luò)爬蟲多任務(wù)執(zhí)行和調(diào)度的系統(tǒng),其特征在于,所述系統(tǒng)包括: 數(shù)據(jù)庫:分別所述節(jié)點(diǎn)服務(wù)器連接用于保存爬取任務(wù)信息; 節(jié)點(diǎn)服務(wù)器,用于執(zhí)行網(wǎng)絡(luò)爬蟲爬取任務(wù);所述節(jié)點(diǎn)服務(wù)器包括: 采集模塊,通過所述爬蟲解析模板文件形成用于具體執(zhí)行爬取任務(wù)并進(jìn)行數(shù)據(jù)采集; 調(diào)度器,用于按照預(yù)先定義的調(diào)度策略調(diào)用關(guān)聯(lián)的采集模塊執(zhí)行爬取任務(wù)。
【文檔編號】G06F9/46GK103605764SQ201310610659
【公開日】2014年2月26日 申請日期:2013年11月26日 優(yōu)先權(quán)日:2013年11月26日
【發(fā)明者】宋軻, 劉世才, 毛海濤 申請人:Tcl集團(tuán)股份有限公司