本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)爬取方法及裝置。
背景技術(shù):
爬蟲是人們?yōu)榱诵蜗竺枋鲇?jì)算機(jī)程序在網(wǎng)絡(luò)不斷通過定制的入口網(wǎng)址去提取網(wǎng)頁(yè)的鏈接,并根據(jù)這些鏈接再度抓取更深的其它未知的鏈接,以此下去,將這樣的程序抓取形為形容成類似爬蟲似的動(dòng)作,稱之為爬蟲,爬蟲通過下載指定網(wǎng)站的所有鏈接來獲取開發(fā)者想要獲取的信息。
爬蟲在爬取網(wǎng)頁(yè)時(shí),首先需要具備一個(gè)指定的網(wǎng)址種子表,該表中記錄著每一個(gè)需要爬取的網(wǎng)站入口地址,以及一些爬取行為的配置信息,如爬取深度,模擬請(qǐng)求的元信息等。然后將網(wǎng)址種子表定時(shí)注入到爬蟲系統(tǒng)中,使得爬蟲系統(tǒng)將網(wǎng)址種子表中的爬取任務(wù)分配給各個(gè)爬蟲程序。其中,對(duì)于爬蟲爬取的網(wǎng)頁(yè)中不包含具體內(nèi)容的網(wǎng)頁(yè)為列表頁(yè);包含具體內(nèi)容的網(wǎng)頁(yè)為文章頁(yè)。
目前,爬蟲程序在爬取列表頁(yè)后,會(huì)向廣播服務(wù)器發(fā)送其爬取的列表頁(yè)信息,廣播服務(wù)器在接收到爬取的列表頁(yè)信息后,將爬取的列表頁(yè)信息轉(zhuǎn)發(fā)給其他爬蟲程序,以減少爬蟲程序重復(fù)爬取列表頁(yè)的情況。然而,由于廣播服務(wù)器發(fā)送信息的延遲,將會(huì)導(dǎo)致其他爬蟲程序?qū)σ雅廊∵^的列表頁(yè)進(jìn)行重復(fù)爬取,因此現(xiàn)有的數(shù)據(jù)爬取方法的爬取重復(fù)率較高。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述問題,提出了本發(fā)明,以便提供一種克服上述問題或者至少部分地解決上述問題的數(shù)據(jù)爬取方法及裝置。
為達(dá)到上述目的,本發(fā)明主要提供如下技術(shù)方案:
一方面,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)爬取方法,該方法包括:
接收爬蟲程序發(fā)送的頁(yè)面爬取請(qǐng)求信息,所述頁(yè)面爬取請(qǐng)求信息中包括列表頁(yè)鏈接;
判斷緩存隊(duì)列中是否存在所述列表頁(yè)鏈接,所述緩存隊(duì)列中存儲(chǔ)有爬蟲程序已經(jīng)爬取過的列表頁(yè)鏈接;
若所述緩存隊(duì)列中不存在所述列表頁(yè)鏈接,則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的確認(rèn)信息,以使得所述爬蟲程序?qū)λ隽斜眄?yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取。
另一方面,本發(fā)明實(shí)施例還提供一種數(shù)據(jù)爬取裝置,該裝置包括:
接收單元,用于接收爬蟲程序發(fā)送的頁(yè)面爬取請(qǐng)求信息,所述頁(yè)面爬取請(qǐng)求信息中包括列表頁(yè)鏈接;
判斷單元,用于判斷緩存隊(duì)列中是否存在所述列表頁(yè)鏈接,所述緩存隊(duì)列中存儲(chǔ)有爬蟲程序已經(jīng)爬取過的列表頁(yè)鏈接;
發(fā)送單元,用于若所述緩存隊(duì)列中不存在所述列表頁(yè)鏈接,則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的確認(rèn)信息,以使得所述爬蟲程序?qū)λ隽斜眄?yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取。
借由上述技術(shù)方案,本發(fā)明實(shí)施例提供的技術(shù)方案至少具有下列優(yōu)點(diǎn):
本發(fā)明實(shí)施例提供的一種數(shù)據(jù)爬取方法及裝置,首先接收爬蟲程序發(fā)送的頁(yè)面爬取請(qǐng)求信息,所述頁(yè)面爬取請(qǐng)求信息中包括列表頁(yè)鏈接,然后判斷緩存隊(duì)列中是否存在所述列表頁(yè)鏈接,所述緩存隊(duì)列中存儲(chǔ)有爬蟲程序已經(jīng)爬取過的列表頁(yè)鏈接,若所述緩存隊(duì)列中不存在所述列表頁(yè)鏈接,則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的確認(rèn)信息,以使得所述爬蟲程序?qū)λ隽斜眄?yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取。與目前通過爬蟲程序向廣播服務(wù)器發(fā)送其爬取的信息,然后由廣播服務(wù)器負(fù)責(zé)將爬取的消息轉(zhuǎn)發(fā)給其他的爬蟲程序,以實(shí)現(xiàn)均衡控制各個(gè)爬蟲程序爬取列表頁(yè)鏈接對(duì)應(yīng)的頁(yè)面相比,在本發(fā)明實(shí)施例中,當(dāng)爬蟲程序接收到爬取任務(wù)后,首先向緩存隊(duì)列發(fā)送頁(yè)面爬取請(qǐng)求信息,所述頁(yè)面爬取請(qǐng)求信息中包括列表頁(yè)鏈接,然后根據(jù)緩存隊(duì)列中存儲(chǔ)的已爬取過的列表頁(yè)鏈接判斷是否對(duì)頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接進(jìn)行爬取,即以緩存隊(duì)列中存儲(chǔ)的鏈接判斷頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接是否為已經(jīng)爬取過的鏈接,因此通過本發(fā)明實(shí)施例 可以減少數(shù)據(jù)爬取的重復(fù)率。
附圖說明
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
圖1為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)爬取方法流程圖;
圖2為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)爬取方法流程圖;
圖3為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)爬取裝置的組成框圖;
圖4為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)爬取裝置的組成框圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
為使本發(fā)明技術(shù)方案的優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作詳細(xì)說明。
本發(fā)明實(shí)施例提供了一種數(shù)據(jù)爬取方法,如圖1所示,所述方法包括:
101、接收爬蟲程序發(fā)送的頁(yè)面爬取請(qǐng)求信息。
其中,所述頁(yè)面爬取請(qǐng)求信息中包括列表頁(yè)鏈接。需要說明的是,列表頁(yè)鏈接為列表頁(yè)的url(uniformresourcelocator,統(tǒng)一資源定位符),所述列表頁(yè)為不包含內(nèi)容的網(wǎng)頁(yè),而包含具體內(nèi)容的網(wǎng)頁(yè)為文章頁(yè)。
102、判斷緩存隊(duì)列中是否存在所述列表頁(yè)鏈接。
其中,所述緩存隊(duì)列中存儲(chǔ)有爬蟲程序已經(jīng)爬取過的列表頁(yè)鏈接。需要說明的是,緩存隊(duì)列中的列表頁(yè)鏈接是實(shí)時(shí)更新的,當(dāng)所述頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接不在緩存隊(duì)列中時(shí),需要將頁(yè)面爬取請(qǐng)求信息中的 列表頁(yè)鏈接等信息對(duì)應(yīng)存儲(chǔ)到緩存隊(duì)列中。
例如,緩存隊(duì)列中存儲(chǔ)的已經(jīng)爬取過的列表頁(yè)鏈接為:http://www.sina.com.cn/、http://www.ganji.com/、http://www.dangdang.com/,若頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接為:http://www.sina.com.cn/,則經(jīng)過判斷得出緩存隊(duì)列中存在對(duì)應(yīng)的列表頁(yè)鏈接,說明當(dāng)前的任務(wù)鏈接是已經(jīng)爬取過的,爬蟲程序無需再對(duì)列表頁(yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬??;若頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接為:https://ju.taobao.com/,則經(jīng)過判斷得出緩存隊(duì)列中不存在對(duì)應(yīng)的列表頁(yè)鏈接,則需要爬蟲程序?qū)α斜眄?yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取,在爬蟲程序爬取列表頁(yè)鏈接對(duì)應(yīng)的頁(yè)面之后,還需要將頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接等信息對(duì)應(yīng)保存到緩存隊(duì)列當(dāng)中。
103、若所述緩存隊(duì)列中不存在所述列表頁(yè)鏈接,則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的確認(rèn)信息。
進(jìn)一步地,以使得所述爬蟲程序?qū)λ隽斜眄?yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取。對(duì)于本發(fā)明實(shí)施例,當(dāng)爬蟲程序接收到爬取任務(wù)后,首先向緩存隊(duì)列發(fā)送頁(yè)面爬取請(qǐng)求信息,所述頁(yè)面爬取請(qǐng)求信息中包括列表頁(yè)鏈接,然后根據(jù)緩存隊(duì)列中存儲(chǔ)的已爬取過的列表頁(yè)鏈接判斷是否對(duì)頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接進(jìn)行爬取,若緩存隊(duì)列中存在對(duì)應(yīng)的列表頁(yè)鏈接,說明頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接是已經(jīng)爬取過的,爬蟲程序無需再對(duì)該條列表頁(yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取,因此通過本發(fā)明實(shí)施例可以減少數(shù)據(jù)爬取的重復(fù)率。
本發(fā)明實(shí)施例提供了另一種數(shù)據(jù)爬取方法,如圖2所示,所述方法包括:
201、接收爬蟲程序發(fā)送的頁(yè)面爬取請(qǐng)求信息。
其中,所述頁(yè)面爬取請(qǐng)求信息中包括列表頁(yè)鏈接。需要說明的是,列表頁(yè)鏈接為列表頁(yè)的url(uniformresourcelocator,統(tǒng)一資源定位符),所述列表頁(yè)為不包含內(nèi)容的網(wǎng)頁(yè),而包含具體內(nèi)容的網(wǎng)頁(yè)為文章頁(yè)。
對(duì)于本發(fā)明實(shí)施例,所述接收爬蟲程序發(fā)送的頁(yè)面爬取請(qǐng)求信息之前,所述方法還包括:接收所述爬蟲程序發(fā)送的事物處理函數(shù);根據(jù)所述事物處理函數(shù)初始化所述緩存隊(duì)列,并計(jì)算所述事物處理函數(shù)對(duì)應(yīng)的唯一標(biāo)識(shí) 碼;將所述唯一標(biāo)識(shí)碼發(fā)送給所述爬蟲程序,以使得所述爬蟲程序通過所述唯一標(biāo)識(shí)碼向所述緩存隊(duì)列發(fā)送頁(yè)面爬取請(qǐng)求信息。其中,所述事物處理函數(shù)用于指示緩存隊(duì)列如何對(duì)接收到的頁(yè)面爬取請(qǐng)求信息進(jìn)行處理,其中,事物處理函數(shù)具體可以根據(jù)緩存隊(duì)列中處理數(shù)據(jù)的實(shí)際需求進(jìn)行配置,也可以根據(jù)用戶的需求進(jìn)行配置,本發(fā)明實(shí)施例不做具體限定。在本發(fā)明實(shí)施例中,在緩存隊(duì)列收到事物處理函數(shù)后,會(huì)將事物處理函數(shù)加載進(jìn)程序中并返回給爬蟲程序一串唯一標(biāo)識(shí)碼。其中,唯一標(biāo)識(shí)碼具體可以為通過md5(message-digestalgorithm5,信息摘要算法5)算法得到的標(biāo)識(shí)碼,也可有sha1(securehashalgorithm,安全哈希算法)算法得到的標(biāo)識(shí)碼,本發(fā)明實(shí)施例不做具體限定。
在本發(fā)明實(shí)施例中,由于唯一標(biāo)識(shí)碼是緩存隊(duì)列是通過對(duì)事物處理函數(shù)進(jìn)行哈希運(yùn)算取得的結(jié)果,也就是說同一事物處理函數(shù)傳入緩存隊(duì)列,得到的標(biāo)識(shí)碼是一致的,所以無論爬蟲程序發(fā)送相同的事物處理函數(shù)到緩存隊(duì)列多少次,得到的返回標(biāo)識(shí)碼都是一樣的。因此根據(jù)事物處理函數(shù)初始化緩存隊(duì)列之后,每次調(diào)用只需要以標(biāo)識(shí)碼來代替事物處理函數(shù)即可,從而避免了事物處理函數(shù)過長(zhǎng)而造成的網(wǎng)絡(luò)開銷。
例如,若緩存隊(duì)列中定義了事務(wù)處理函數(shù)需要兩個(gè)參數(shù):“arg1”、“arg2”。那么調(diào)用緩存隊(duì)列時(shí)就需要攜帶以下三個(gè)參數(shù):“code”、“arg1”、“arg2”。其中,“code”為緩存隊(duì)列通過事務(wù)處理函數(shù)得到的唯一標(biāo)識(shí)碼,“arg1”、“arg2”為頁(yè)面爬取請(qǐng)求信息中的參數(shù),所述參數(shù)具體可以為列表頁(yè)鏈接、緩存時(shí)間、爬取間隔時(shí)間、剩余爬取層級(jí)等,本發(fā)明實(shí)施例不做具體限定。需要說明的是,本發(fā)明實(shí)施例不限制參數(shù)的格式以及傳輸方式。
對(duì)于本發(fā)明實(shí)施例,所述頁(yè)面爬取請(qǐng)求信息中還包括與所述列表頁(yè)鏈接對(duì)應(yīng)的爬取間隔時(shí)間、剩余爬取層級(jí)。需要說明的是,爬蟲程序關(guān)于爬取層級(jí)控制的原理:在爬蟲任務(wù)注入爬蟲系統(tǒng)時(shí),會(huì)由管理員對(duì)爬蟲任務(wù)可爬取的層級(jí)做出限制。比如對(duì)爬取sina.com的任務(wù)設(shè)置最多爬取三級(jí)。那么該任務(wù)在爬取sina.com主頁(yè)后,會(huì)將主頁(yè)所有鏈接抽取出來進(jìn)行下一輪爬取。這些抽取出來的鏈接在下次爬取時(shí),剩余層級(jí)就會(huì)由最初的三級(jí)減少為兩級(jí)。當(dāng)層級(jí)為0時(shí)爬蟲任務(wù)就會(huì)結(jié)束。
202、判斷緩存隊(duì)列中是否存在所述列表頁(yè)鏈接。
其中,所述緩存隊(duì)列中存儲(chǔ)有爬蟲程序已經(jīng)爬取過的列表頁(yè)鏈接。需要說明的是,緩存隊(duì)列中的列表頁(yè)鏈接是實(shí)時(shí)更新的,當(dāng)所述頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接不在緩存隊(duì)列中時(shí),需要將頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接等信息對(duì)應(yīng)存儲(chǔ)到緩存隊(duì)列中。
203a、若所述緩存隊(duì)列中不存在所述列表頁(yè)鏈接,則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的確認(rèn)信息。
進(jìn)一步地,以使得所述爬蟲程序?qū)λ隽斜眄?yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取。對(duì)于本發(fā)明實(shí)施例,當(dāng)爬蟲程序接收到爬取任務(wù)后,首先向緩存隊(duì)列發(fā)送頁(yè)面爬取請(qǐng)求信息,所述頁(yè)面爬取請(qǐng)求信息中包括列表頁(yè)鏈接,然后根據(jù)緩存隊(duì)列中存儲(chǔ)的已爬取過的列表頁(yè)鏈接判斷是否對(duì)頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接進(jìn)行爬取,若緩存隊(duì)列中存在對(duì)應(yīng)的列表頁(yè)鏈接,說明頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接是已經(jīng)爬取過的,爬蟲程序無需再對(duì)該條列表頁(yè)鏈接進(jìn)行爬取,因此通過本發(fā)明實(shí)施例可以減少數(shù)據(jù)爬取的重復(fù)率。
對(duì)于本發(fā)明實(shí)施例,在所述緩存隊(duì)列中不存在所述列表頁(yè)鏈接之后,所述方法還包括:將所述頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接,及與所述列表頁(yè)鏈接對(duì)應(yīng)的緩存時(shí)間、爬取間隔時(shí)間、剩余爬取層級(jí)對(duì)應(yīng)存儲(chǔ)到所述緩存隊(duì)列中。
在本發(fā)明實(shí)施例中,所述方法還包括:按照預(yù)置時(shí)間間隔將所述緩存隊(duì)列中緩存時(shí)間與爬取間隔時(shí)間的和大于當(dāng)前時(shí)間對(duì)應(yīng)的緩存數(shù)據(jù)刪除。其中,所述預(yù)置時(shí)間間隔可以根據(jù)實(shí)際需要進(jìn)行配置,如10分鐘、20分鐘、30分鐘等,本發(fā)明實(shí)施例不做具體限定。對(duì)于本發(fā)明實(shí)施例,緩存隊(duì)列定時(shí)的對(duì)所有的緩存信息進(jìn)行清理,起到緩存生存時(shí)間控制的功能。本發(fā)明通過循環(huán)遍歷緩存隊(duì)列中的緩存數(shù)據(jù),查找緩存時(shí)間與爬取間隔時(shí)間的和大于當(dāng)前時(shí)間的緩存數(shù)據(jù)。如果緩存數(shù)據(jù)中的緩存時(shí)間加上爬取間隔時(shí)間大于當(dāng)前時(shí)間,那么表示該條緩存已失效,因此需要將其刪除,從而通過本發(fā)明實(shí)施例可以減少緩存隊(duì)列中緩存數(shù)據(jù)的數(shù)量,進(jìn)而提高了查找緩存隊(duì)列中列表頁(yè)鏈接的時(shí)間,提高了數(shù)據(jù)爬取的效率。需要說明的是,當(dāng)重 復(fù)的列表頁(yè)鏈接再次發(fā)送到緩存隊(duì)列時(shí),由于該條列表頁(yè)鏈接對(duì)應(yīng)的緩存數(shù)據(jù)已經(jīng)不存在,因此直接創(chuàng)建新的緩存數(shù)據(jù)到緩存隊(duì)列中即可。
203b、若所述緩存隊(duì)列中存在所述列表頁(yè)鏈接,則判斷緩存隊(duì)列中與所述列表頁(yè)鏈接對(duì)應(yīng)鏈接的緩存時(shí)間及爬取間隔時(shí)間的和,是否早于當(dāng)前時(shí)間。
其中,步驟203b為步驟203a的并列步驟,若所述緩存隊(duì)列中存在所述列表頁(yè)鏈接,則判斷緩存隊(duì)列中與所述列表頁(yè)鏈接對(duì)應(yīng)鏈接的緩存時(shí)間及爬取間隔時(shí)間的和,是否早于當(dāng)前時(shí)間。需要說明的是,由于網(wǎng)站管理員會(huì)對(duì)網(wǎng)頁(yè)內(nèi)容進(jìn)行定期更新,因此每個(gè)網(wǎng)頁(yè)會(huì)有一個(gè)有效時(shí)間,本發(fā)明中的爬取間隔時(shí)間即為網(wǎng)頁(yè)的有效時(shí)間,若當(dāng)前時(shí)間晚于對(duì)應(yīng)鏈接的緩存時(shí)間及爬取間隔時(shí)間的和,則說明緩存隊(duì)列中存儲(chǔ)的對(duì)應(yīng)連接的內(nèi)容已經(jīng)過期,因此需要對(duì)其進(jìn)行重新爬取,因此通過判斷緩存隊(duì)列中與所述列表頁(yè)鏈接對(duì)應(yīng)鏈接的緩存時(shí)間及爬取間隔時(shí)間的和是否早于當(dāng)前時(shí)間,可以提高數(shù)據(jù)爬取的精確度。
203b1、若所述對(duì)應(yīng)鏈接的緩存時(shí)間及爬取間隔時(shí)間的和早于當(dāng)前時(shí)間,則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的確認(rèn)信息。
進(jìn)一步地,以使得所述爬蟲程序?qū)λ隽斜眄?yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取。
例如,當(dāng)前時(shí)間為2016-01-20上午8:10,緩存隊(duì)列中對(duì)應(yīng)列表頁(yè)鏈接的緩存時(shí)間為2016-01-10上午8:10,爬取間隔時(shí)間為3天,即緩存隊(duì)列中對(duì)應(yīng)列表頁(yè)鏈接的有效時(shí)間為2016-01-13上午8:10。因此經(jīng)過判斷緩存隊(duì)列中對(duì)應(yīng)列表頁(yè)鏈接的緩存時(shí)間及爬取間隔時(shí)間的和早于當(dāng)前時(shí)間,即2016-01-13上午8:10早于2016-01-20上午8:10,由此說明緩存隊(duì)列中與列表頁(yè)鏈接對(duì)應(yīng)鏈接的內(nèi)容已經(jīng)過期,需要通過爬蟲程序?qū)α斜眄?yè)鏈接進(jìn)行重新爬取。因此在緩存隊(duì)列中對(duì)應(yīng)列表頁(yè)鏈接的緩存時(shí)間及爬取間隔時(shí)間的和早于當(dāng)前時(shí)間的情況下,需要向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的確認(rèn)信息,以使得所述爬蟲程序?qū)λ隽斜眄?yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取,以滿足數(shù)據(jù)爬取的準(zhǔn)確性。
在本發(fā)明實(shí)施例中,若所述對(duì)應(yīng)鏈接的緩存時(shí)間及爬取間隔時(shí)間的和 早于當(dāng)前時(shí)間,則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的確認(rèn)信息之后,所述方法還包括:通過所述當(dāng)前時(shí)間,及所述列表頁(yè)鏈接對(duì)應(yīng)的爬取間隔時(shí)間、剩余爬取層級(jí)更新所述緩存隊(duì)列中對(duì)應(yīng)列表頁(yè)鏈接的緩存時(shí)間、爬取間隔時(shí)間、剩余爬取層級(jí)。需要說明的是,由于列表頁(yè)鏈接有可能與爬蟲隊(duì)列中對(duì)應(yīng)鏈接的爬取時(shí)間間隔、剩余爬取層級(jí)不一致,因此在爬蟲程序?qū)α斜眄?yè)鏈接爬取后,需要將緩存隊(duì)列中的列表頁(yè)鏈接對(duì)應(yīng)的緩存時(shí)間、爬取時(shí)間間隔、剩余爬取層級(jí)等信息進(jìn)行更新,以實(shí)時(shí)更新緩存隊(duì)列中爬取數(shù)據(jù)的狀態(tài)。
203b2、若所述對(duì)應(yīng)鏈接的緩存時(shí)間及爬取間隔時(shí)間的和晚于當(dāng)前時(shí)間,則判斷所述列表頁(yè)鏈接的剩余爬取層級(jí)是否大于緩存隊(duì)列中對(duì)應(yīng)鏈接的剩余爬取層級(jí)。
其中,步驟203b2為步驟203b1的并列步驟,若所述對(duì)應(yīng)鏈接的緩存時(shí)間及爬取間隔時(shí)間的和晚于當(dāng)前時(shí)間,則判斷所述列表頁(yè)鏈接的剩余爬取層級(jí)是否大于緩存隊(duì)列中對(duì)應(yīng)鏈接的剩余爬取層級(jí)。
對(duì)于本發(fā)明實(shí)施例,若所述對(duì)應(yīng)鏈接的緩存時(shí)間及爬取間隔時(shí)間的和晚于當(dāng)前時(shí)間,則還需要判斷所述列表頁(yè)鏈接的剩余爬取層級(jí)是否大于緩存隊(duì)列中對(duì)應(yīng)鏈接的剩余爬取層級(jí)。如果列表頁(yè)鏈接的剩余爬取層級(jí)更深,則允許爬蟲程序?qū)?yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取,并爬蟲程序爬取之后將列表頁(yè)鏈接的剩余爬取層級(jí)以及緩存時(shí)間記錄在緩存隊(duì)列中。例如:一個(gè)爬蟲任務(wù)注入了列表頁(yè)鏈接sina.com,爬取層級(jí)為3,爬取時(shí)間間隔為10分鐘。另一個(gè)爬蟲任務(wù)在相隔兩分鐘后注入了列表頁(yè)鏈接sina.com,爬取層級(jí)為4,列表頁(yè)爬取時(shí)間間隔為10分鐘。由于后一個(gè)爬蟲任務(wù)在前一個(gè)任務(wù)的列表頁(yè)爬取間隔內(nèi),說明列表頁(yè)鏈接對(duì)應(yīng)的網(wǎng)頁(yè)內(nèi)容未過期,但是后一個(gè)列表頁(yè)鏈接的爬取深度大于前一個(gè)列表頁(yè)鏈接。如果后一個(gè)任務(wù)僅以爬取時(shí)間間隔作為是否需要進(jìn)行爬取的考量,那么sina.com的第四層就不會(huì)被爬取到。因此通過本發(fā)明實(shí)施例,可以提高了數(shù)據(jù)爬取的深度,即提高爬蟲程序爬取的數(shù)據(jù)量。
203b2a、若大于緩存隊(duì)列中對(duì)應(yīng)鏈接的剩余爬取層級(jí),則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的確認(rèn)信息。
進(jìn)一步地,以使得所述爬蟲程序?qū)λ隽斜眄?yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取。
在本發(fā)明實(shí)施例中,若列表頁(yè)鏈接的剩余爬取層級(jí)大于緩存隊(duì)列中對(duì)應(yīng)鏈接的剩余爬取層級(jí),則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的確認(rèn)信息之后,所述方法還包括:通過所述當(dāng)前時(shí)間,及所述列表頁(yè)鏈接對(duì)應(yīng)的爬取間隔時(shí)間、剩余爬取層級(jí)更新所述緩存隊(duì)列中列表頁(yè)鏈接對(duì)應(yīng)的緩存時(shí)間、爬取間隔時(shí)間、剩余爬取層級(jí)。需要說明的是,由于列表頁(yè)鏈接有可能與爬蟲隊(duì)列中對(duì)應(yīng)鏈接的爬取時(shí)間間隔、剩余爬取層級(jí)不一致,因此在爬蟲程序?qū)α斜眄?yè)鏈接爬取后,需要將緩存隊(duì)列中的列表頁(yè)鏈接對(duì)應(yīng)的緩存時(shí)間、爬取時(shí)間間隔、剩余爬取層級(jí)等信息進(jìn)行更新,以實(shí)時(shí)更新緩存隊(duì)列中爬取數(shù)據(jù)的狀態(tài),從而提高緩存隊(duì)列根據(jù)緩存數(shù)據(jù)判斷是否對(duì)頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接進(jìn)行爬取的準(zhǔn)確性,進(jìn)而提高了爬蟲程序爬取數(shù)據(jù)的數(shù)量及準(zhǔn)確度。
203b2b、若小于等于緩存隊(duì)列中對(duì)應(yīng)鏈接的剩余爬取層級(jí),則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的取消信息。
進(jìn)一步地,以使得所述爬蟲程序取消對(duì)所述列表頁(yè)鏈接的爬取任務(wù)。其中,步驟203b2b為步驟203b2a的并列步驟,若列表頁(yè)鏈接的剩余爬取層級(jí)小于等于緩存隊(duì)列中對(duì)應(yīng)鏈接的剩余爬取層級(jí),則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的取消信息,以使得所述爬蟲程序取消對(duì)所述列表頁(yè)鏈接的爬取任務(wù)。
本發(fā)明實(shí)施例提供的一種數(shù)據(jù)爬取方法,首先接收爬蟲程序發(fā)送的頁(yè)面爬取請(qǐng)求信息,所述頁(yè)面爬取請(qǐng)求信息中包括列表頁(yè)鏈接,然后判斷緩存隊(duì)列中是否存在所述列表頁(yè)鏈接,所述緩存隊(duì)列中存儲(chǔ)有爬蟲程序已經(jīng)爬取過的列表頁(yè)鏈接,若所述緩存隊(duì)列中不存在所述列表頁(yè)鏈接,則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的確認(rèn)信息,以使得所述爬蟲程序?qū)λ隽斜眄?yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取。與目前通過爬蟲程序向廣播服務(wù)器發(fā)送其爬取的信息,然后由廣播服務(wù)器負(fù)責(zé)將爬取的消息轉(zhuǎn)發(fā)給其他的爬蟲程序,以實(shí)現(xiàn)均衡控制各個(gè)爬蟲程序爬取列表頁(yè)鏈接對(duì)應(yīng)的頁(yè)面相比,在本發(fā)明實(shí)施例中,當(dāng)爬蟲程序接收到爬取任務(wù)后,首先向緩存隊(duì)列發(fā)送頁(yè) 面爬取請(qǐng)求信息,所述頁(yè)面爬取請(qǐng)求信息中包括列表頁(yè)鏈接,然后根據(jù)緩存隊(duì)列中存儲(chǔ)的已爬取過的列表頁(yè)鏈接判斷是否對(duì)頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接進(jìn)行爬取,即以緩存隊(duì)列中存儲(chǔ)的鏈接判斷頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接是否為已經(jīng)爬取過的鏈接,因此通過本發(fā)明實(shí)施例可以減少數(shù)據(jù)爬取的重復(fù)率。
進(jìn)一步地,本發(fā)明實(shí)施例提供一種數(shù)據(jù)爬取裝置,如圖3所示,所述裝置包括:接收單元31、判斷單元32、發(fā)送單元33。
接收單元31,用于接收爬蟲程序發(fā)送的頁(yè)面爬取請(qǐng)求信息,所述頁(yè)面爬取請(qǐng)求信息中包括列表頁(yè)鏈接;
判斷單元32,用于判斷緩存隊(duì)列中是否存在所述列表頁(yè)鏈接,所述緩存隊(duì)列中存儲(chǔ)有爬蟲程序已經(jīng)爬取過的列表頁(yè)鏈接;
發(fā)送單元33,用于若所述緩存隊(duì)列中不存在所述列表頁(yè)鏈接,則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的確認(rèn)信息,以使得所述爬蟲程序?qū)λ隽斜眄?yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取。
需要說明的是,本發(fā)明實(shí)施例提供的一種數(shù)據(jù)爬取裝置所涉及各功能單元的其他相應(yīng)描述,可以參考圖1所示方法的對(duì)應(yīng)描述,在此不再贅述,但應(yīng)當(dāng)明確,本實(shí)施例中的裝置能夠?qū)?yīng)實(shí)現(xiàn)前述方法實(shí)施例中的全部?jī)?nèi)容。
進(jìn)一步地,本發(fā)明實(shí)施例提供另一種數(shù)據(jù)爬取裝置,如圖4所示,所述裝置包括:接收單元41、判斷單元42、發(fā)送單元43。
接收單元41,用于接收爬蟲程序發(fā)送的頁(yè)面爬取請(qǐng)求信息,所述頁(yè)面爬取請(qǐng)求信息中包括列表頁(yè)鏈接;
判斷單元42,用于判斷緩存隊(duì)列中是否存在所述列表頁(yè)鏈接,所述緩存隊(duì)列中存儲(chǔ)有爬蟲程序已經(jīng)爬取過的列表頁(yè)鏈接;
發(fā)送單元43,用于若所述緩存隊(duì)列中不存在所述列表頁(yè)鏈接,則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的確認(rèn)信息,以使得所述爬蟲程序?qū)λ隽斜眄?yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取。
對(duì)于本發(fā)明實(shí)施例,所述頁(yè)面爬取請(qǐng)求信息中還包括與所述列表頁(yè)鏈接對(duì)應(yīng)的爬取間隔時(shí)間、剩余爬取層級(jí),所述裝置還包括:
存儲(chǔ)單元44,用于將所述頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接,及與所述列表頁(yè)鏈接對(duì)應(yīng)的緩存時(shí)間、爬取間隔時(shí)間、剩余爬取層級(jí)對(duì)應(yīng)存儲(chǔ)到所述緩存隊(duì)列中。
所述判斷單元42,還用于若所述緩存隊(duì)列中存在所述列表頁(yè)鏈接,則判斷緩存隊(duì)列中與所述列表頁(yè)鏈接對(duì)應(yīng)鏈接的緩存時(shí)間及爬取間隔時(shí)間的和,是否早于當(dāng)前時(shí)間;
所述發(fā)送單元43,用于若所述對(duì)應(yīng)鏈接的緩存時(shí)間及爬取間隔時(shí)間的和早于當(dāng)前時(shí)間,則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的確認(rèn)信息,以使得所述爬蟲程序?qū)λ隽斜眄?yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取。
所述判斷單元42,還用于若所述對(duì)應(yīng)鏈接的緩存時(shí)間及爬取間隔時(shí)間的和晚于當(dāng)前時(shí)間,則判斷所述列表頁(yè)鏈接的剩余爬取層級(jí)是否大于緩存隊(duì)列中對(duì)應(yīng)鏈接的剩余爬取層級(jí);
所述發(fā)送單元43,用于若大于緩存隊(duì)列中對(duì)應(yīng)鏈接的剩余爬取層級(jí),則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的確認(rèn)信息,以使得所述爬蟲程序?qū)λ隽斜眄?yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取;
所述發(fā)送單元43,還用于若小于等于緩存隊(duì)列中對(duì)應(yīng)鏈接的剩余爬取層級(jí),則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的取消信息,以使得所述爬蟲程序取消對(duì)所述列表頁(yè)鏈接的爬取任務(wù)。
對(duì)于本發(fā)明實(shí)施例,所述裝置還包括:
更新單元45,用于通過所述當(dāng)前時(shí)間,及所述列表頁(yè)鏈接對(duì)應(yīng)的爬取間隔時(shí)間、剩余爬取層級(jí)更新所述緩存隊(duì)列中列表頁(yè)鏈接對(duì)應(yīng)的緩存時(shí)間、爬取間隔時(shí)間、剩余爬取層級(jí)。
刪除單元46,用于按照預(yù)置時(shí)間間隔將所述緩存隊(duì)列中緩存時(shí)間與爬取間隔時(shí)間的和大于當(dāng)前時(shí)間對(duì)應(yīng)的緩存數(shù)據(jù)刪除。
對(duì)于本發(fā)明實(shí)施例,所述裝置還包括:初始化單元47;
所述接收單元41,還用于接收所述爬蟲程序發(fā)送的事物處理函數(shù);
所述初始化單元47,用于根據(jù)所述事物處理函數(shù)初始化所述緩存隊(duì)列,并計(jì)算所述事物處理函數(shù)對(duì)應(yīng)的唯一標(biāo)識(shí)碼;
所述發(fā)送單元43,還用于將所述唯一標(biāo)識(shí)碼發(fā)送給所述爬蟲程序,以 使得所述爬蟲程序通過所述唯一標(biāo)識(shí)碼向所述緩存隊(duì)列發(fā)送頁(yè)面爬取請(qǐng)求信息。
需要說明的是,本發(fā)明實(shí)施例提供的一種數(shù)據(jù)爬取裝置所涉及各功能單元的其他相應(yīng)描述,可以參考圖2所示方法的對(duì)應(yīng)描述,在此不再贅述,但應(yīng)當(dāng)明確,本實(shí)施例中的裝置能夠?qū)?yīng)實(shí)現(xiàn)前述方法實(shí)施例中的全部?jī)?nèi)容。
本發(fā)明實(shí)施例提供的一種數(shù)據(jù)爬取裝置,首先接收爬蟲程序發(fā)送的頁(yè)面爬取請(qǐng)求信息,所述頁(yè)面爬取請(qǐng)求信息中包括列表頁(yè)鏈接,然后判斷緩存隊(duì)列中是否存在所述列表頁(yè)鏈接,所述緩存隊(duì)列中存儲(chǔ)有爬蟲程序已經(jīng)爬取過的列表頁(yè)鏈接,若所述緩存隊(duì)列中不存在所述列表頁(yè)鏈接,則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的確認(rèn)信息,以使得所述爬蟲程序?qū)λ隽斜眄?yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取。與目前通過爬蟲程序向廣播服務(wù)器發(fā)送其爬取的信息,然后由廣播服務(wù)器負(fù)責(zé)將爬取的消息轉(zhuǎn)發(fā)給其他的爬蟲程序,以實(shí)現(xiàn)均衡控制各個(gè)爬蟲程序爬取列表頁(yè)鏈接對(duì)應(yīng)的頁(yè)面相比,在本發(fā)明實(shí)施例中,當(dāng)爬蟲程序接收到爬取任務(wù)后,首先向緩存隊(duì)列發(fā)送頁(yè)面爬取請(qǐng)求信息,所述頁(yè)面爬取請(qǐng)求信息中包括列表頁(yè)鏈接,然后根據(jù)緩存隊(duì)列中存儲(chǔ)的已爬取過的列表頁(yè)鏈接判斷是否對(duì)頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接進(jìn)行爬取,即以緩存隊(duì)列中存儲(chǔ)的鏈接判斷頁(yè)面爬取請(qǐng)求信息中的列表頁(yè)鏈接是否為已經(jīng)爬取過的鏈接,因此通過本發(fā)明實(shí)施例可以減少數(shù)據(jù)爬取的重復(fù)率。
所述數(shù)據(jù)爬取裝置包括處理器和存儲(chǔ)器,上述接收單元、判斷單元、發(fā)送單元、存儲(chǔ)單元、更新單元、刪除單元和初始化單元等均作為程序單元存儲(chǔ)在存儲(chǔ)器中,由處理器執(zhí)行存儲(chǔ)在存儲(chǔ)器中的上述程序單元來實(shí)現(xiàn)相應(yīng)的功能。
處理器中包含內(nèi)核,由內(nèi)核去存儲(chǔ)器中調(diào)取相應(yīng)的程序單元。內(nèi)核可以設(shè)置一個(gè)或以上,通過調(diào)整內(nèi)核參數(shù)來減少數(shù)據(jù)爬取的重復(fù)率。
存儲(chǔ)器可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram),存儲(chǔ)器包括至少一個(gè)存儲(chǔ)芯片。
本申請(qǐng)還提供了一種計(jì)算機(jī)程序產(chǎn)品,當(dāng)在數(shù)據(jù)處理設(shè)備上執(zhí)行時(shí),適于執(zhí)行初始化有如下方法步驟的程序代碼:接收爬蟲程序發(fā)送的頁(yè)面爬取請(qǐng)求信息,所述頁(yè)面爬取請(qǐng)求信息中包括列表頁(yè)鏈接;判斷緩存隊(duì)列中是否存在所述列表頁(yè)鏈接,所述緩存隊(duì)列中存儲(chǔ)有爬蟲程序已經(jīng)爬取過的列表頁(yè)鏈接;若所述緩存隊(duì)列中不存在所述列表頁(yè)鏈接,則向所述爬蟲程序發(fā)送所述頁(yè)面爬取請(qǐng)求的確認(rèn)信息,以使得所述爬蟲程序?qū)λ隽斜眄?yè)鏈接對(duì)應(yīng)的頁(yè)面進(jìn)行爬取。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的 功能的步驟。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
存儲(chǔ)器可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。存儲(chǔ)器是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
以上僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來說,本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。