亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于爬蟲的數(shù)據(jù)存儲方法及裝置與流程

文檔序號:11154193閱讀:706來源:國知局
用于爬蟲的數(shù)據(jù)存儲方法及裝置與制造工藝

本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,具體而言,涉及一種用于爬蟲的數(shù)據(jù)存儲方法及裝置。



背景技術(shù):

爬蟲程序是一種常見的用于收集網(wǎng)絡(luò)數(shù)據(jù)的機(jī)器人程序。往往由于需要收集的網(wǎng)絡(luò)數(shù)據(jù)眾多,所以單個(gè)爬蟲程序是無法勝任的。

目前,為了提升對網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行收集的收集速度,出現(xiàn)了分布式爬蟲系統(tǒng)。其中,分布式爬蟲系統(tǒng)通過多臺部署有爬蟲程序的服務(wù)器對網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行協(xié)作爬取。在分布式爬蟲系統(tǒng)中,為了使多臺服務(wù)器協(xié)作爬取,通常會(huì)在系統(tǒng)中設(shè)置任務(wù)隊(duì)列和存儲隊(duì)列。

在實(shí)際應(yīng)用當(dāng)中,可以預(yù)先將配置好的包含有需要爬取的網(wǎng)絡(luò)地址和爬取行為規(guī)則的爬取任務(wù)寫入到任務(wù)隊(duì)列當(dāng)中。在通過分布式爬蟲系統(tǒng)進(jìn)行爬取時(shí),每臺部署有爬蟲程序的服務(wù)器會(huì)依次從任務(wù)隊(duì)列中獲取爬取任務(wù),并根據(jù)爬取任務(wù)進(jìn)行爬取。當(dāng)部署有爬蟲程序的服務(wù)器獲取到爬取結(jié)果后,將爬取結(jié)果發(fā)送至用于存儲爬取結(jié)果的存儲隊(duì)列當(dāng)中。最后,再由用于存儲數(shù)據(jù)的存儲程序?qū)⒋鎯﹃?duì)列中的爬取結(jié)果存放至指定位置當(dāng)中。

在上述分布式爬蟲系統(tǒng)中存在如下缺點(diǎn):

1、當(dāng)存儲隊(duì)列中積壓數(shù)據(jù)過多,而導(dǎo)致存儲程序崩潰后,將導(dǎo)致數(shù)據(jù)滿載,使分布式爬蟲系統(tǒng)無法正常運(yùn)行。

2、將爬取結(jié)果直接存儲數(shù)據(jù)庫會(huì)帶來性能損耗,將爬取結(jié)果直接存儲至存儲隊(duì)列中,會(huì)因內(nèi)存容量有限,影響系統(tǒng)穩(wěn)定性。

針對上述現(xiàn)有技術(shù)中由于存儲隊(duì)列中數(shù)據(jù)量過大,導(dǎo)致的分布式爬蟲系統(tǒng)運(yùn)行穩(wěn)定性差的問題,目前尚未提出有效的解決方案。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明實(shí)施例提供了一種用于爬蟲的數(shù)據(jù)存儲方法及裝置,以至少解決由于存儲 隊(duì)列中數(shù)據(jù)量過大,導(dǎo)致的分布式爬蟲系統(tǒng)運(yùn)行穩(wěn)定性差的技術(shù)問題。

根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種用于爬蟲的數(shù)據(jù)存儲方法,包括:將爬蟲的爬取結(jié)果的文件大小與預(yù)先設(shè)置的閾值進(jìn)行比較;當(dāng)爬取結(jié)果的文件大小大于或等于閾值時(shí),將爬取結(jié)果存儲至第一存儲位置;生成與爬取結(jié)果對應(yīng)的唯一標(biāo)識信息,其中,唯一標(biāo)識信息用于對存儲于第一存儲位置的爬取結(jié)果進(jìn)行唯一索引;將唯一標(biāo)識信息發(fā)送至存儲隊(duì)列。

進(jìn)一步地,在將唯一標(biāo)識信息發(fā)送至存儲隊(duì)列之后,方法還包括:通過存儲程序依次從存儲隊(duì)列中讀取待存儲的數(shù)據(jù)內(nèi)容;當(dāng)存儲程序在存儲隊(duì)列中讀取到唯一標(biāo)識信息時(shí),存儲程序從第一存儲位置獲取與唯一標(biāo)識信息對應(yīng)的爬取結(jié)果;通過存儲程序?qū)⑴c唯一標(biāo)識信息對應(yīng)的爬取結(jié)果發(fā)送至第二存儲位置。

進(jìn)一步地,生成與爬取結(jié)果對應(yīng)的唯一標(biāo)識信息包括:對爬取結(jié)果進(jìn)行壓縮處理,得到壓縮數(shù)據(jù)文件;根據(jù)壓縮數(shù)據(jù)文件,生成與壓縮數(shù)據(jù)文件對應(yīng)的唯一標(biāo)識信息。

進(jìn)一步地,在通過存儲程序?qū)⑴c唯一標(biāo)識信息對應(yīng)的爬取結(jié)果發(fā)送至第二存儲位置之前,方法還包括:對壓縮數(shù)據(jù)文件進(jìn)行解壓處理,得到爬取數(shù)據(jù)文件。

進(jìn)一步地,將唯一標(biāo)識信息存儲至存儲隊(duì)列包括:獲取爬取到的爬取結(jié)果的爬取時(shí)間;根據(jù)爬取時(shí)間的時(shí)間順序,將爬取結(jié)果和/或唯一標(biāo)識信息依次發(fā)送至存儲隊(duì)列。

根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種用于爬蟲的數(shù)據(jù)存儲裝置,包括:比較模塊,用于將爬蟲的爬取結(jié)果的文件大小與預(yù)先設(shè)置的閾值進(jìn)行比較;存儲模塊,用于當(dāng)爬取結(jié)果的文件大小大于或等于閾值時(shí),將爬取結(jié)果存儲至第一存儲位置;生成模塊,用于生成與爬取結(jié)果對應(yīng)的唯一標(biāo)識信息,其中,唯一標(biāo)識信息用于對存儲于第一存儲位置的爬取結(jié)果進(jìn)行唯一索引;第一發(fā)送模塊,用于將唯一標(biāo)識信息發(fā)送至存儲隊(duì)列。

進(jìn)一步地,裝置還包括:讀取模塊,用于通過存儲程序依次從存儲隊(duì)列中讀取待存儲的數(shù)據(jù)內(nèi)容;獲取模塊,用于當(dāng)存儲程序在存儲隊(duì)列中讀取到唯一標(biāo)識信息時(shí),存儲程序從第一存儲位置獲取與唯一標(biāo)識信息對應(yīng)的爬取結(jié)果;第二發(fā)送模塊,用于通過存儲程序?qū)⑴c唯一標(biāo)識信息對應(yīng)的爬取結(jié)果發(fā)送至第二存儲位置。

進(jìn)一步地,生成模塊包括:子壓縮模塊,用于對爬取結(jié)果進(jìn)行壓縮處理,得到壓縮數(shù)據(jù)文件;子生成模塊,用于根據(jù)壓縮數(shù)據(jù)文件,生成與壓縮數(shù)據(jù)文件對應(yīng)的唯一標(biāo)識信息。

進(jìn)一步地,裝置還包括:解壓模塊,用于對壓縮數(shù)據(jù)文件進(jìn)行解壓處理,得到爬 取數(shù)據(jù)文件。

進(jìn)一步地,第二存儲模塊包括:子獲取模塊,用于獲取爬取到的爬取結(jié)果的爬取時(shí)間;以及子存儲模塊,用于根據(jù)爬取時(shí)間的時(shí)間順序,將爬取結(jié)果和/或唯一標(biāo)識信息依次存儲至存儲隊(duì)列。

在本發(fā)明實(shí)施例中,采用將爬蟲的爬取結(jié)果的文件大小與預(yù)先設(shè)置的閾值進(jìn)行比較;當(dāng)爬取結(jié)果的文件大小大于或等于閾值時(shí),將爬取結(jié)果存儲至第一存儲位置;生成與爬取結(jié)果對應(yīng)的唯一標(biāo)識信息,其中,唯一標(biāo)識信息用于對存儲于第一存儲位置的爬取結(jié)果進(jìn)行唯一索引;將唯一標(biāo)識信息發(fā)送至存儲隊(duì)列的方式,達(dá)到了減小存儲隊(duì)列占用內(nèi)存的空間的目的,從而實(shí)現(xiàn)了提高分布式爬蟲系統(tǒng)穩(wěn)定性的技術(shù)效果,進(jìn)而解決了由于存儲隊(duì)列中數(shù)據(jù)量過大,導(dǎo)致的分布式爬蟲系統(tǒng)運(yùn)行穩(wěn)定性差的技術(shù)問題。

附圖說明

此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:

圖1是根據(jù)本發(fā)明實(shí)施例的一種用于爬蟲的數(shù)據(jù)存儲方法的流程示意圖;

圖2是根據(jù)本發(fā)明實(shí)施例的一種優(yōu)選的用于爬蟲的數(shù)據(jù)存儲方法的流程示意圖;

圖3是根據(jù)本發(fā)明實(shí)施例的一種用于爬蟲的數(shù)據(jù)存儲裝置的示意圖;

圖4是根據(jù)本發(fā)明實(shí)施例的一種優(yōu)選的用于爬蟲的數(shù)據(jù)存儲裝置的示意圖;以及

圖5是根據(jù)本發(fā)明實(shí)施例的另一種優(yōu)選的用于爬蟲的數(shù)據(jù)存儲裝置的示意圖。

具體實(shí)施方式

為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。

需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在 這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。

根據(jù)本發(fā)明實(shí)施例,提供了一種用于爬蟲的數(shù)據(jù)存儲方法的方法實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。

圖1是根據(jù)本發(fā)明實(shí)施例的用于爬蟲的數(shù)據(jù)存儲方法的流程示意圖,如圖1所示,該方法包括如下步驟:

步驟S21,將爬蟲的爬取結(jié)果的文件大小與預(yù)先設(shè)置的閾值進(jìn)行比較。

步驟S23,當(dāng)爬取結(jié)果的文件大小大于或等于閾值時(shí),將爬取結(jié)果存儲至第一存儲位置。

步驟S25,生成與爬取結(jié)果對應(yīng)的唯一標(biāo)識信息,其中,唯一標(biāo)識信息用于對存儲于第一存儲位置的爬取結(jié)果進(jìn)行唯一索引。

步驟S27,將唯一標(biāo)識信息發(fā)送至存儲隊(duì)列。

具體的,通過上述步驟S21至步驟S27,首先對分布式爬蟲系統(tǒng)獲取到的爬取數(shù)據(jù)文件的文件容量進(jìn)行判斷,當(dāng)文件容量小于預(yù)先設(shè)置的閾值時(shí),將爬取數(shù)據(jù)文件直接存儲至存儲隊(duì)列當(dāng)中,等待上傳至服務(wù)器。當(dāng)文件容量大于或等于預(yù)先設(shè)置的閾值時(shí),生成與爬取數(shù)據(jù)文件唯一對應(yīng)的索引信息。將爬取數(shù)據(jù)文件存儲值預(yù)先設(shè)置的第一存儲位置,將與其對應(yīng)的索引信息存儲至存儲隊(duì)列當(dāng)中。達(dá)到了減小存儲隊(duì)列占用內(nèi)存的空間的目的,從而實(shí)現(xiàn)了提高分布式爬蟲系統(tǒng)運(yùn)行穩(wěn)定性的技術(shù)效果,進(jìn)而解決了由于存儲隊(duì)列中數(shù)據(jù)量過大,導(dǎo)致的分布式爬蟲系統(tǒng)運(yùn)行穩(wěn)定性差的技術(shù)問題。

作為一種可選的實(shí)施方式,在實(shí)際應(yīng)用當(dāng)中,以分布式爬蟲系統(tǒng)為例進(jìn)行說明。在分布式爬蟲系統(tǒng)中,為了均衡各臺爬蟲服務(wù)器的負(fù)載,通常會(huì)設(shè)置用于派發(fā)爬取任務(wù)的任務(wù)隊(duì)列和用于臨時(shí)存儲爬取數(shù)據(jù)文件的存儲隊(duì)列。為了避免存儲隊(duì)列中因數(shù)據(jù)積壓,而導(dǎo)致的存儲容量不足的問題,可以預(yù)先設(shè)置一個(gè)緩存服務(wù)器。當(dāng)分布式爬蟲系統(tǒng)獲取到爬取數(shù)據(jù)文件后,將爬取數(shù)據(jù)文件的文件容量與預(yù)先設(shè)置的閾值進(jìn)行比對,判斷爬取數(shù)據(jù)文件是否需要轉(zhuǎn)存至緩存服務(wù)器當(dāng)中。當(dāng)確定爬取數(shù)據(jù)文件大于閾值時(shí),生成與其對應(yīng)的索引信息,并將爬取數(shù)據(jù)文件轉(zhuǎn)存至緩存服務(wù)器當(dāng)中,將索引信息存儲至存儲隊(duì)列當(dāng)中。

作為一種可選的實(shí)施方式,當(dāng)?shù)谝淮鎯ξ恢脼镕TP服務(wù)器時(shí),在索引信息中,至少包括與爬取數(shù)據(jù)文件對應(yīng)的文件索引以及與爬取數(shù)據(jù)文件對應(yīng)的存儲路徑。當(dāng)然,第一存儲位置還可以包括除FTP服務(wù)器以外任意一種用于數(shù)據(jù)存儲的服務(wù)器類型或本地存儲,此處不做贅述。

作為一種可選的實(shí)施方式,如圖2所示,在步驟S27在將唯一標(biāo)識信息發(fā)送至存儲隊(duì)列之后,上述方法還包括:

步驟S28,通過存儲程序依次從存儲隊(duì)列中讀取待存儲的數(shù)據(jù)內(nèi)容。

步驟S30,當(dāng)存儲程序在存儲隊(duì)列中讀取到唯一標(biāo)識信息時(shí),存儲程序從第一存儲位置獲取與唯一標(biāo)識信息對應(yīng)的爬取結(jié)果。

步驟S32,通過存儲程序?qū)⑴c唯一標(biāo)識信息對應(yīng)的爬取結(jié)果發(fā)送至第二存儲位置。

具體的,通過步驟S28至步驟S32,通過存儲程序依次對存儲隊(duì)列中的數(shù)據(jù)內(nèi)容進(jìn)行讀取。在讀取過程中,首先對讀取到的數(shù)據(jù)內(nèi)容的類型進(jìn)行判斷。當(dāng)確定數(shù)據(jù)內(nèi)容為爬取到的數(shù)據(jù)文件時(shí),直接將數(shù)據(jù)文件發(fā)送至第二存儲位置當(dāng)中進(jìn)行存儲。當(dāng)確定數(shù)據(jù)內(nèi)容為唯一標(biāo)識信息時(shí),通過唯一標(biāo)識信息中的存儲路徑以及文件索引,從第一存儲位置獲取到與索引信息對應(yīng)的數(shù)據(jù)文件,并將該數(shù)據(jù)文件發(fā)送至第二存儲位置當(dāng)中進(jìn)行存儲。

其中,索引信息可以為爬取到的數(shù)據(jù)文件的文件名稱,也可以是爬取到的數(shù)據(jù)文件獲取的時(shí)間信息,當(dāng)然還可以是根據(jù)爬取數(shù)據(jù)文件的名稱,通過算法計(jì)算得到的十六位進(jìn)制的文件索引。此處不對索引信息的具體實(shí)施方式進(jìn)行具體限定。

作為一種可選的實(shí)施方式,在步驟S25生成與爬取結(jié)果對應(yīng)的唯一標(biāo)識信息中,步驟可以包括:

步驟S251,對爬取結(jié)果進(jìn)行壓縮處理,得到壓縮數(shù)據(jù)文件。

步驟S253,根據(jù)壓縮數(shù)據(jù)文件,生成與壓縮數(shù)據(jù)文件對應(yīng)的唯一標(biāo)識信息。

具體的,為了進(jìn)一步降低對存儲空間的需求,通過步驟S251至步驟S253對文件容量大于閾值的爬取數(shù)據(jù)文件進(jìn)行壓縮處理,并根據(jù)壓縮得到的壓縮數(shù)據(jù)文件生成對應(yīng)的索引信息。進(jìn)而將壓縮得到的壓縮數(shù)據(jù)文件存儲至第一存儲位置,將索引信息存儲至存儲隊(duì)列當(dāng)中。

作為一種可選的實(shí)施方式,在步驟S32通過存儲程序?qū)⑴c唯一標(biāo)識對應(yīng)的爬取結(jié)果發(fā)送至第二存儲位置之前,上述方法還可以包括:

步驟S31,對壓縮數(shù)據(jù)文件進(jìn)行解壓處理,得到爬取數(shù)據(jù)文件。

具體的,在將爬取數(shù)據(jù)文件存儲至第二存儲位置之前,通過步驟S34對存儲于第一存儲位置的壓縮數(shù)據(jù)文件進(jìn)行解壓處理,從而得到原始的爬取數(shù)據(jù)文件。

作為一種可選的實(shí)施方式,在步驟S27將唯一標(biāo)識信息存儲至存儲隊(duì)列中,步驟可以包括:

步驟S271,獲取爬取到的爬取結(jié)果的爬取時(shí)間。

步驟S273,根據(jù)爬取時(shí)間的時(shí)間順序,將爬取結(jié)果和/或唯一標(biāo)識信息依次發(fā)送至存儲隊(duì)列。

具體的,通過步驟S271至步驟S273,按照爬取數(shù)據(jù)文件爬取時(shí)間的時(shí)間順序,依次將索引信息存儲至存儲隊(duì)列當(dāng)中。

在實(shí)際應(yīng)用當(dāng)中,以分布式爬蟲系統(tǒng)為例進(jìn)行說明。在分布式爬蟲系統(tǒng)中,通常會(huì)包含有多臺爬蟲服務(wù)器對網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行協(xié)同爬取。為了保證爬取到的爬取數(shù)據(jù)文件可以按順序存儲至數(shù)據(jù)庫當(dāng)中,可以設(shè)置用于緩存爬取數(shù)據(jù)文件的帶存儲隊(duì)列。各臺爬蟲服務(wù)器,可以按照獲取到爬取數(shù)據(jù)文件的獲取時(shí)間,依次將爬取到的爬取數(shù)據(jù)文件或者索引信息依次存儲至存儲隊(duì)列當(dāng)中。

作為一種優(yōu)選的實(shí)施方式,對爬取數(shù)據(jù)文件進(jìn)行篩選的過程,以及將存儲隊(duì)列中的內(nèi)容上傳至數(shù)據(jù)庫中的過程,分別進(jìn)行說明。

其中,在對爬取數(shù)據(jù)文件進(jìn)行篩選的過程中,步驟可以包括:

步驟S1,獲取爬取任務(wù)。

步驟S2,分布式爬蟲系統(tǒng)中的爬蟲服務(wù)器在爬取得到爬取數(shù)據(jù)文件。

步驟S3,將爬取數(shù)據(jù)文件與配置信息中的最大文件大小的閾值進(jìn)行比對,如果超過閾值則對爬取數(shù)據(jù)文件進(jìn)行壓縮。

步驟S4,根據(jù)壓縮后的爬取數(shù)據(jù)文件生成與爬取數(shù)據(jù)文件唯一對應(yīng)的ID標(biāo)識,并將ID標(biāo)識記錄在待存儲任務(wù)信息當(dāng)中。然后,將包含有ID標(biāo)識的待存儲任務(wù)信息發(fā)送至存儲消息隊(duì)列中及您修改存儲。最后,將壓縮后的爬取數(shù)據(jù)文件上傳至FTP服務(wù)器進(jìn)行暫存處理。

在將存儲隊(duì)列中的內(nèi)容上傳至數(shù)據(jù)庫中的過程中,步驟可以包括:

步驟S1,讀取存儲隊(duì)列中的待存儲任務(wù)信息。

步驟S2,對讀取的待存儲任務(wù)信息的類型進(jìn)行判斷。

步驟S3,當(dāng)待存儲任務(wù)信息的類型ID標(biāo)識時(shí),從FTP服務(wù)器中下載并對爬取數(shù)據(jù)文件進(jìn)行解壓處理。

步驟S4,將解壓后的爬取數(shù)據(jù)文件存儲至數(shù)據(jù)庫當(dāng)中。

步驟S5,否則,當(dāng)待存儲任務(wù)信息的類型為爬取數(shù)據(jù)文件時(shí),直接將該爬取數(shù)據(jù)文件存儲至數(shù)據(jù)庫當(dāng)中。

本發(fā)明實(shí)施例還提供了一種用于爬蟲的數(shù)據(jù)存儲裝置。其中,需要說明的是,本發(fā)明實(shí)施例的用于爬蟲的數(shù)據(jù)存儲裝置可以用于執(zhí)行本發(fā)明實(shí)施例所提供的用于爬蟲的數(shù)據(jù)存儲方法,本發(fā)明實(shí)施例的用于爬蟲的數(shù)據(jù)存儲方法也可以通過本發(fā)明實(shí)施例所提供的用于爬蟲的數(shù)據(jù)存儲裝置來執(zhí)行。

圖3是根據(jù)本發(fā)明實(shí)施例的用于爬蟲的數(shù)據(jù)存儲裝置的結(jié)構(gòu)示意圖。如圖3所示,該裝置包括:比較模塊21、存儲模塊23、生成模塊25和第一發(fā)送模塊27。

其中,比較模塊21,用于將爬蟲的爬取結(jié)果的文件大小與預(yù)先設(shè)置的閾值進(jìn)行比較;存儲模塊23,用于當(dāng)爬取結(jié)果的文件大小大于或等于閾值時(shí),將爬取結(jié)果存儲至第一存儲位置;生成模塊25,用于生成與爬取結(jié)果對應(yīng)的唯一標(biāo)識信息,其中,唯一標(biāo)識信息用于對存儲于第一存儲位置的爬取結(jié)果進(jìn)行唯一索引;第一發(fā)送模塊27,用于將唯一標(biāo)識信息發(fā)送至存儲隊(duì)列。

具體的,通過上述比較模塊21、存儲模塊23、生成模塊25和第一發(fā)送模塊27,首先對分布式爬蟲系統(tǒng)獲取到的爬取數(shù)據(jù)文件的文件容量進(jìn)行判斷,當(dāng)文件容量小于預(yù)先設(shè)置的閾值時(shí),將爬取數(shù)據(jù)文件直接存儲至存儲隊(duì)列當(dāng)中,等待上傳至服務(wù)器。當(dāng)文件容量大于或等于預(yù)先設(shè)置的閾值時(shí),生成與爬取數(shù)據(jù)文件唯一對應(yīng)的索引信息。將爬取數(shù)據(jù)文件存儲值預(yù)先設(shè)置的第一存儲位置,將與其對應(yīng)的索引信息存儲至存儲隊(duì)列當(dāng)中。達(dá)到了減小存儲隊(duì)列占用內(nèi)存的空間的目的,從而實(shí)現(xiàn)了提高分布式爬蟲系統(tǒng)運(yùn)行穩(wěn)定性的技術(shù)效果,進(jìn)而解決了由于存儲隊(duì)列中數(shù)據(jù)量過大,導(dǎo)致的分布式爬蟲系統(tǒng)運(yùn)行穩(wěn)定性差的技術(shù)問題。

作為一種可選的實(shí)施方式,在實(shí)際應(yīng)用當(dāng)中,以分布式爬蟲系統(tǒng)為例進(jìn)行說明。在分布式爬蟲系統(tǒng)中,為了均衡各臺爬蟲服務(wù)器的負(fù)載,通常會(huì)設(shè)置用于派發(fā)爬取任務(wù)的任務(wù)隊(duì)列和用于臨時(shí)存儲爬取數(shù)據(jù)文件的存儲隊(duì)列。為了避免存儲隊(duì)列中因數(shù)據(jù)積壓,而導(dǎo)致的存儲容量不足的問題,可以預(yù)先設(shè)置一個(gè)緩存服務(wù)器。當(dāng)分布式爬蟲系統(tǒng)獲取到爬取數(shù)據(jù)文件后,將爬取數(shù)據(jù)文件的文件容量與預(yù)先設(shè)置的閾值進(jìn)行比對,判斷爬取數(shù)據(jù)文件是否需要轉(zhuǎn)存至緩存服務(wù)器當(dāng)中。當(dāng)確定爬取數(shù)據(jù)文件大于閾值時(shí), 生成與其對應(yīng)的索引信息,并將爬取數(shù)據(jù)文件轉(zhuǎn)存至緩存服務(wù)器當(dāng)中,將索引信息存儲至存儲隊(duì)列當(dāng)中。

作為一種可選的實(shí)施方式,當(dāng)?shù)谝淮鎯ξ恢脼镕TP服務(wù)器時(shí),在索引信息中,至少包括與爬取數(shù)據(jù)文件對應(yīng)的文件索引以及與爬取數(shù)據(jù)文件對應(yīng)的存儲路徑。當(dāng)然,第一存儲位置還可以包括除FTP服務(wù)器以外任意一種用于數(shù)據(jù)存儲的服務(wù)器類型或本地存儲,此處不做贅述。

作為一種可選的實(shí)施方式,如圖4所示,上述裝置還可以包括:讀取模塊28、獲取模塊30和第二發(fā)送模塊32。

其中,讀取模塊28,用于通過存儲程序依次從存儲隊(duì)列中讀取待存儲的數(shù)據(jù)內(nèi)容;

獲取模塊30,用于當(dāng)存儲程序在存儲隊(duì)列中讀取到唯一標(biāo)識信息時(shí),存儲程序從第一存儲位置獲取與唯一標(biāo)識信息對應(yīng)的爬取結(jié)果;

第二發(fā)送模塊32,用于通過存儲程序?qū)⑴c唯一標(biāo)識信息對應(yīng)的爬取結(jié)果發(fā)送至第二存儲位置。

具體的,通過上述讀取模塊28、獲取模塊30和第二發(fā)送模塊32,通過存儲程序依次對存儲隊(duì)列中的數(shù)據(jù)內(nèi)容進(jìn)行讀取。在讀取過程中,首先對讀取到的數(shù)據(jù)內(nèi)容的類型進(jìn)行判斷。當(dāng)確定數(shù)據(jù)內(nèi)容為爬取到的數(shù)據(jù)文件時(shí),直接將數(shù)據(jù)文件發(fā)送至第二存儲位置當(dāng)中進(jìn)行存儲。當(dāng)確定數(shù)據(jù)內(nèi)容為唯一標(biāo)識信息時(shí),通過唯一標(biāo)識信息中的存儲路徑以及文件索引,從第一存儲位置獲取到與索引信息對應(yīng)的數(shù)據(jù)文件,并將該數(shù)據(jù)文件發(fā)送至第二存儲位置當(dāng)中進(jìn)行存儲。

其中,索引信息可以為爬取到的數(shù)據(jù)文件的文件名稱,也可以是爬取到的數(shù)據(jù)文件獲取的時(shí)間信息,當(dāng)然還可以是根據(jù)爬取數(shù)據(jù)文件的名稱,通過算法計(jì)算得到的十六位進(jìn)制的文件索引。此處不對索引信息的具體實(shí)施方式進(jìn)行具體限定。

作為一種可選的實(shí)施方式,上述生成模塊25包括:子壓縮模塊251和子生成模塊253。

其中,子壓縮模塊251,用于對爬取結(jié)果進(jìn)行壓縮處理,得到壓縮數(shù)據(jù)文件;

子生成模塊253,用于根據(jù)壓縮數(shù)據(jù)文件,生成與壓縮數(shù)據(jù)文件對應(yīng)的唯一標(biāo)識信息。

具體的,為了進(jìn)一步降低對存儲空間的需求,通過上述子壓縮模塊251和子生成模塊253對文件容量大于閾值的爬取數(shù)據(jù)文件進(jìn)行壓縮處理,并根據(jù)壓縮得到的壓縮 數(shù)據(jù)文件生成對應(yīng)的索引信息。進(jìn)而將壓縮得到的壓縮數(shù)據(jù)文件存儲至第一存儲位置,將索引信息存儲至存儲隊(duì)列當(dāng)中。

作為一種可選的實(shí)施方式,如圖5所示,上述裝置還可以包括:解壓模塊31。

其中,解壓模塊31,用于對壓縮數(shù)據(jù)文件進(jìn)行解壓處理,得到爬取數(shù)據(jù)文件。

具體的,在將爬取數(shù)據(jù)文件存儲至第二存儲位置之前,通過上述解壓模塊31對存儲于第一存儲位置的壓縮數(shù)據(jù)文件進(jìn)行解壓處理,從而得到原始的爬取數(shù)據(jù)文件。

作為一種可選的實(shí)施方式,在上述存儲模塊27中可以包括:子獲取模塊271和子存儲模塊273。

其中,子獲取模塊271,用于獲取爬取到的爬取結(jié)果的爬取時(shí)間;

子存儲模塊273,用于根據(jù)爬取時(shí)間的時(shí)間順序,將爬取結(jié)果和/或唯一標(biāo)識信息依次存儲至存儲隊(duì)列。

具體的,通過上述子獲取模塊271和子存儲模塊273,按照爬取數(shù)據(jù)文件爬取時(shí)間的時(shí)間順序,依次將索引信息存儲至存儲隊(duì)列當(dāng)中。

在實(shí)際應(yīng)用當(dāng)中,以分布式爬蟲系統(tǒng)為例進(jìn)行說明。在分布式爬蟲系統(tǒng)中,通常會(huì)包含有多臺爬蟲服務(wù)器對網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行協(xié)同爬取。為了保證爬取到的爬取數(shù)據(jù)文件可以按順序存儲至數(shù)據(jù)庫當(dāng)中,可以設(shè)置用于緩存爬取數(shù)據(jù)文件的帶存儲隊(duì)列。各臺爬蟲服務(wù)器,可以按照獲取到爬取數(shù)據(jù)文件的獲取時(shí)間,依次將爬取到的爬取數(shù)據(jù)文件或者索引信息依次存儲至存儲隊(duì)列當(dāng)中。

上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。

在本發(fā)明的上述實(shí)施例中,對各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。

在本申請所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。

所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到 多個(gè)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。

另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。

所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲在一個(gè)計(jì)算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個(gè)存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、移動(dòng)硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1