分布式網(wǎng)頁(yè)下載方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種分布式網(wǎng)頁(yè)下載方法和系統(tǒng),所述方法包括:網(wǎng)絡(luò)爬蟲向任務(wù)調(diào)度服務(wù)單元發(fā)送網(wǎng)頁(yè)下載請(qǐng)求;所述任務(wù)調(diào)度服務(wù)單元接收并將上述網(wǎng)頁(yè)下載請(qǐng)求保存至第一消息隊(duì)列;上網(wǎng)客戶端從所述任務(wù)調(diào)度服務(wù)單元的第一消息隊(duì)列獲取一個(gè)網(wǎng)頁(yè)下載請(qǐng)求,下載相應(yīng)的網(wǎng)頁(yè)數(shù)據(jù),保存至所述任務(wù)調(diào)度服務(wù)單元的第二消息隊(duì)列;所述任務(wù)調(diào)度服務(wù)單元將所述第二消息隊(duì)列中的網(wǎng)頁(yè)數(shù)據(jù)返回至請(qǐng)求網(wǎng)頁(yè)下載的相應(yīng)網(wǎng)絡(luò)爬蟲。本發(fā)明基于雙消息隊(duì)列的點(diǎn)對(duì)點(diǎn)分布式網(wǎng)頁(yè)下載方式,可利用分散在各處的可上網(wǎng)機(jī)器來(lái)抓取網(wǎng)頁(yè),準(zhǔn)實(shí)時(shí)響應(yīng)網(wǎng)頁(yè)下載請(qǐng)求,可有效的突破網(wǎng)站對(duì)并發(fā)下載請(qǐng)求的限制。
【專利說(shuō)明】分布式網(wǎng)頁(yè)下載方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,特別地,涉及一種分布式網(wǎng)頁(yè)下載方法和系統(tǒng)?!颈尘凹夹g(shù)】
[0002]分布式網(wǎng)頁(yè)下載系統(tǒng)包含多個(gè)網(wǎng)絡(luò)爬蟲,每個(gè)網(wǎng)絡(luò)爬蟲都需要從互聯(lián)網(wǎng)抓取網(wǎng)頁(yè)數(shù)據(jù)并保存起來(lái)。所有的這些網(wǎng)絡(luò)爬蟲可能分布在不同的地理位置,根據(jù)其分散的程度不同,網(wǎng)絡(luò)爬蟲系統(tǒng)可以分為兩大類:一類是基于局域網(wǎng)的分布式網(wǎng)絡(luò)爬蟲系統(tǒng);另一類是基于廣域網(wǎng)的分布式網(wǎng)絡(luò)爬蟲系統(tǒng)。
[0003]在網(wǎng)頁(yè)抓取項(xiàng)目中通常最缺的是IP地址資源,大多數(shù)網(wǎng)站,特別是特定領(lǐng)域的,如微博等,對(duì)抓取端會(huì)做限制,如同一 IP地址的并發(fā)請(qǐng)求限制、一段時(shí)間內(nèi)同一 IP地址的訪問(wèn)次數(shù)限制等等。
[0004]綜上,不管基于上述何種機(jī)制,都需要突破網(wǎng)站對(duì)網(wǎng)絡(luò)爬蟲系統(tǒng)的IP限制,但I(xiàn)P資源往往是比較有限的,無(wú)法實(shí)現(xiàn)有效、快速下載網(wǎng)頁(yè)的目標(biāo)。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種分布式網(wǎng)頁(yè)下載方法,用于解決現(xiàn)有網(wǎng)頁(yè)下載系統(tǒng)因IP地址資源有限造成的無(wú)法有效下載網(wǎng)頁(yè)的問(wèn)題。
[0006]本發(fā)明還提供了一種分布式網(wǎng)頁(yè)下載系統(tǒng),以保證上述方法在實(shí)際中的應(yīng)用。
[0007]為了解決上述問(wèn)題,本發(fā)明公開了一種分布式網(wǎng)頁(yè)下載方法,執(zhí)行所述方法的系統(tǒng)包括任務(wù)調(diào)度服務(wù)單元、2個(gè)以上的網(wǎng)絡(luò)爬蟲以及2個(gè)以上分布在不同地理位置具有不同IP地址的上網(wǎng)客戶端,所述方法包括:所述網(wǎng)絡(luò)爬蟲向任務(wù)調(diào)度服務(wù)單元發(fā)送網(wǎng)頁(yè)下載請(qǐng)求,所述下載請(qǐng)求參數(shù)包括所述網(wǎng)頁(yè)的URL地址;所述任務(wù)調(diào)度服務(wù)單元接收并將上述網(wǎng)頁(yè)下載請(qǐng)求保存至第一消息隊(duì)列;所述上網(wǎng)客戶端從所述任務(wù)調(diào)度服務(wù)單元的第一消息隊(duì)列獲取一個(gè)網(wǎng)頁(yè)下載請(qǐng)求,根據(jù)所述URL地址下載相應(yīng)的網(wǎng)頁(yè)數(shù)據(jù),保存至所述任務(wù)調(diào)度服務(wù)單元的第二消息隊(duì)列;所述任務(wù)調(diào)度服務(wù)單元將所述第二消息隊(duì)列中的網(wǎng)頁(yè)數(shù)據(jù)返回至請(qǐng)求網(wǎng)頁(yè)下載的相應(yīng)網(wǎng)絡(luò)爬蟲。
[0008]優(yōu)選的,在所述網(wǎng)絡(luò)爬蟲向任務(wù)調(diào)度服務(wù)單元發(fā)送網(wǎng)頁(yè)下載請(qǐng)求步驟之前,還包括:所述網(wǎng)絡(luò)爬蟲向任務(wù)調(diào)度服務(wù)單元發(fā)起TCP連接,并保持連接,直至收到任務(wù)調(diào)度服務(wù)單元返回對(duì)應(yīng)的網(wǎng)頁(yè)數(shù)據(jù)。
[0009]優(yōu)選的,所述上網(wǎng)客戶端從所述任務(wù)調(diào)度服務(wù)單元的第一消息隊(duì)列獲取一個(gè)網(wǎng)頁(yè)下載請(qǐng)求,具體包括:判斷所述第一消息隊(duì)列是否為空;若是,則循環(huán)等待直至所述第一消息隊(duì)列不為空;否則,所述任務(wù)調(diào)度服務(wù)單元從第一消息隊(duì)列讀取一個(gè)網(wǎng)頁(yè)下載請(qǐng)求,并返回給所述上網(wǎng)客戶端。
[0010]優(yōu)選的,所述任務(wù)調(diào)度服務(wù)單元將所述第二消息隊(duì)列中的網(wǎng)頁(yè)數(shù)據(jù)返回至請(qǐng)求網(wǎng)頁(yè)下載的相應(yīng)網(wǎng)絡(luò)爬蟲,具體包括:所述任務(wù)調(diào)度服務(wù)單元監(jiān)聽第二消息隊(duì)列的狀態(tài),當(dāng)有新的網(wǎng)頁(yè)數(shù)據(jù)保存至第二消息隊(duì)列時(shí),讀取該新的網(wǎng)頁(yè)數(shù)據(jù),并返回至請(qǐng)求網(wǎng)頁(yè)下載的相應(yīng)網(wǎng)絡(luò)爬蟲。
[0011]優(yōu)選的,向任務(wù)調(diào)度服務(wù)單元發(fā)起獲取網(wǎng)頁(yè)下載請(qǐng)求的上網(wǎng)客戶端具有空閑的網(wǎng)絡(luò)連接資源。
[0012]依據(jù)本發(fā)明的另一優(yōu)選實(shí)施例,還公開了一種分布式網(wǎng)頁(yè)下載系統(tǒng),包括任務(wù)調(diào)度服務(wù)單元、2個(gè)以上的網(wǎng)絡(luò)爬蟲以及2個(gè)以上分布在不同地理位置具有不同IP地址的上網(wǎng)客戶端,所述任務(wù)調(diào)度服務(wù)單元與所述上網(wǎng)客戶端通過(guò)因特網(wǎng)連接,其中:所述網(wǎng)絡(luò)爬蟲用于向任務(wù)調(diào)度服務(wù)單元發(fā)送網(wǎng)頁(yè)下載請(qǐng)求,以及接收所述任務(wù)調(diào)度服務(wù)單元返回的網(wǎng)頁(yè)數(shù)據(jù);所述下載請(qǐng)求參數(shù)包括所述網(wǎng)頁(yè)的URL地址;所述上網(wǎng)客戶端用于從所述任務(wù)調(diào)度服務(wù)單元的第一消息隊(duì)列獲取一個(gè)網(wǎng)頁(yè)下載請(qǐng)求,根據(jù)所述URL地址通過(guò)互聯(lián)網(wǎng)下載相應(yīng)的網(wǎng)頁(yè)數(shù)據(jù),并保存至所述任務(wù)調(diào)度服務(wù)單元的第二消息隊(duì)列;所述任務(wù)調(diào)度服務(wù)單元用于接收所述網(wǎng)絡(luò)爬蟲發(fā)送的網(wǎng)頁(yè)下載請(qǐng)求,并保存至第一消息隊(duì)列;以及,將所述第二消息隊(duì)列中的網(wǎng)頁(yè)數(shù)據(jù)返回至請(qǐng)求網(wǎng)頁(yè)下載的相應(yīng)網(wǎng)絡(luò)爬蟲。
[0013]優(yōu)選的,所述網(wǎng)絡(luò)爬蟲具體包括:連接子單元,用于向任務(wù)調(diào)度服務(wù)單元發(fā)起TCP連接;下載請(qǐng)求子單元,用于向任務(wù)調(diào)度服務(wù)單元發(fā)送網(wǎng)頁(yè)下載請(qǐng)求;數(shù)據(jù)接收子單元,用于接收任務(wù)調(diào)度服務(wù)單元返回的對(duì)應(yīng)網(wǎng)頁(yè)數(shù)據(jù),并在網(wǎng)頁(yè)數(shù)據(jù)接收完成后斷開所述網(wǎng)絡(luò)爬蟲與任務(wù)調(diào)度服務(wù)單元的連接。
[0014]優(yōu)選的,所述任務(wù)調(diào)度服務(wù)單元具體包括:第一消息隊(duì)列,用于接收并保存所述網(wǎng)絡(luò)爬蟲發(fā)送的網(wǎng)頁(yè)下載請(qǐng)求;第二消息隊(duì)列,用于接收并保存所述上網(wǎng)客戶端下載的網(wǎng)頁(yè)數(shù)據(jù);隊(duì)列監(jiān)控子單元,用于監(jiān)聽所述第二消息隊(duì)列的狀態(tài),當(dāng)有新的網(wǎng)頁(yè)數(shù)據(jù)保存至第二消息隊(duì)列時(shí),讀取該新的網(wǎng)頁(yè)數(shù)據(jù),并返回至請(qǐng)求網(wǎng)頁(yè)下載的相應(yīng)網(wǎng)絡(luò)爬蟲。
[0015]優(yōu)選的,所述上網(wǎng)客戶端具體包括:任務(wù)獲取子單元,用于判斷所述第一消息隊(duì)列的狀態(tài);當(dāng)?shù)谝幌㈥?duì)列不為空時(shí),請(qǐng)求所述任務(wù)調(diào)度服務(wù)單元從第一消息隊(duì)列讀取一個(gè)網(wǎng)頁(yè)下載請(qǐng)求;當(dāng)?shù)谝幌㈥?duì)列為空時(shí),循環(huán)等待直至所述第一消息隊(duì)列不為空;下載子單元,用于根據(jù)所述任務(wù)獲取子單元獲取的網(wǎng)頁(yè)下載請(qǐng)求中包括的URL地址通過(guò)互聯(lián)網(wǎng)下載相應(yīng)的網(wǎng)頁(yè)數(shù)據(jù),并保存至所述任務(wù)調(diào)度服務(wù)單元的第二消息隊(duì)列。
[0016]優(yōu)選的,所述上網(wǎng)客戶端還包括網(wǎng)絡(luò)監(jiān)控子單元,用于監(jiān)控所述上網(wǎng)客戶端網(wǎng)絡(luò)狀態(tài);當(dāng)所述上網(wǎng)客戶端具有空閑的網(wǎng)絡(luò)連接資源時(shí),調(diào)度所述任務(wù)獲取子單元和下載子單元執(zhí)行相應(yīng)的任務(wù)獲取和網(wǎng)頁(yè)下載功能。
[0017]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn):
本發(fā)明優(yōu)選實(shí)施例采用基于雙消息隊(duì)列的點(diǎn)對(duì)點(diǎn)(P2P)分布式網(wǎng)頁(yè)下載方式,可以利用分散在各處的可上網(wǎng)機(jī)器(有空閑網(wǎng)絡(luò)資源的服務(wù)器或個(gè)人電腦)來(lái)抓取網(wǎng)頁(yè),準(zhǔn)實(shí)時(shí)響應(yīng)網(wǎng)頁(yè)下載請(qǐng)求,可有效的突破各類網(wǎng)站對(duì)并發(fā)請(qǐng)求的限制;且上網(wǎng)機(jī)器及網(wǎng)絡(luò)爬蟲端的可擴(kuò)展性強(qiáng),適合于大規(guī)模的分布式網(wǎng)頁(yè)下載系統(tǒng)應(yīng)用。
[0018]基于發(fā)明優(yōu)選實(shí)施例方案,從網(wǎng)絡(luò)爬蟲發(fā)起URL請(qǐng)求至獲得HTML網(wǎng)頁(yè)數(shù)據(jù),一般耗時(shí)不超過(guò)2秒,實(shí)時(shí)響應(yīng)性能高,完全不影響實(shí)際業(yè)務(wù)。
[0019]【專利附圖】
【附圖說(shuō)明】
圖1為本發(fā)明分布式網(wǎng)頁(yè)下載方法一實(shí)施例的流程圖;
圖2為本發(fā)明分布式網(wǎng)頁(yè)下載系統(tǒng)一實(shí)施例的結(jié)構(gòu)示意圖;
圖3為圖2所示的分布式網(wǎng)頁(yè)下載系統(tǒng)實(shí)施例的業(yè)務(wù)邏輯示意圖。【具體實(shí)施方式】
[0020]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。
[0021]方法實(shí)施例:
參照?qǐng)D1,示出了本發(fā)明分布式網(wǎng)頁(yè)下載方法一實(shí)施例的流程,執(zhí)行本方法實(shí)施例的系統(tǒng)包括有網(wǎng)絡(luò)爬蟲、任務(wù)調(diào)度服務(wù)單元以及連接于互聯(lián)網(wǎng)上的上網(wǎng)客戶端(包括個(gè)人電腦、網(wǎng)絡(luò)服務(wù)器等);本優(yōu)選方法實(shí)施例包括以下步驟:
步驟SlOl:網(wǎng)絡(luò)爬蟲向任務(wù)調(diào)度服務(wù)單元發(fā)送網(wǎng)頁(yè)下載請(qǐng)求;
在本優(yōu)選實(shí)施例中,為提高網(wǎng)頁(yè)下載能力,設(shè)置2個(gè)以上請(qǐng)求從互聯(lián)網(wǎng)抓取并保存網(wǎng)頁(yè)數(shù)據(jù)的網(wǎng)絡(luò)爬蟲。
[0022]在上述網(wǎng)頁(yè)下載請(qǐng)求中,請(qǐng)求參數(shù)包括待下載網(wǎng)頁(yè)的URL地址、網(wǎng)絡(luò)傳輸協(xié)議(如http協(xié)議或https協(xié)議)等。
[0023]在具體實(shí)現(xiàn)本發(fā)明方案時(shí),網(wǎng)絡(luò)爬蟲可以與任務(wù)調(diào)度服務(wù)單元部署在同一局域網(wǎng)中,也可以部署在不同的網(wǎng)絡(luò)中;網(wǎng)絡(luò)爬蟲與任務(wù)調(diào)度服務(wù)單元可以長(zhǎng)連接,也可以在需要下載網(wǎng)頁(yè)數(shù)據(jù)時(shí)臨時(shí)建立連接。
[0024]對(duì)于在需要下載網(wǎng)頁(yè)數(shù)據(jù)時(shí)臨時(shí)建立連接的方案,在步驟SlOl之前,需要先建立網(wǎng)絡(luò)爬蟲與任務(wù)調(diào)度服務(wù)單元之間的網(wǎng)絡(luò)連接(如TCP連接),并保持連接,直至收到任務(wù)調(diào)度服務(wù)單元返回對(duì)應(yīng)的網(wǎng)頁(yè)數(shù)據(jù)。
[0025]步驟S102:任務(wù)調(diào)度服務(wù)單元接收并將上述網(wǎng)頁(yè)下載請(qǐng)求保存至第一消息隊(duì)列; 在本優(yōu)選實(shí)施例中,第一消息隊(duì)列(即URL消息隊(duì)列)可以采用先進(jìn)先出(FIFO)的隊(duì)列
存儲(chǔ)結(jié)構(gòu),也可以采用后進(jìn)先出(LIFO)的堆棧存儲(chǔ)結(jié)構(gòu),還可以環(huán)形鏈表存儲(chǔ)結(jié)構(gòu)或其他的存儲(chǔ)結(jié)構(gòu)。
[0026]為保證后續(xù)流程中將網(wǎng)頁(yè)數(shù)據(jù)返回至相應(yīng)的網(wǎng)絡(luò)爬蟲(即發(fā)出該網(wǎng)頁(yè)下載請(qǐng)求的網(wǎng)絡(luò)爬蟲),在將網(wǎng)頁(yè)下載請(qǐng)求保存至第一消息隊(duì)列之前,首先生成一個(gè)唯一標(biāo)識(shí)(如可取該URL的MD5值作為唯一標(biāo)識(shí),也可以采用其他計(jì)算方式),并建立該唯一標(biāo)識(shí)符與網(wǎng)絡(luò)爬蟲、URL參數(shù)的關(guān)聯(lián)關(guān)系。
[0027]步驟S103:上網(wǎng)客戶端從任務(wù)調(diào)度服務(wù)單元的第一消息隊(duì)列獲取一個(gè)網(wǎng)頁(yè)下載請(qǐng)求;
為克服各類網(wǎng)站或網(wǎng)絡(luò)服務(wù)器對(duì)每個(gè)IP發(fā)出的并發(fā)請(qǐng)求的限制,執(zhí)行本方法實(shí)施例的系統(tǒng)設(shè)置2個(gè)以上具有不同IP地址的上網(wǎng)客戶端,優(yōu)選設(shè)置2個(gè)以上分布在不同地理位置的上網(wǎng)客戶端。
[0028]該網(wǎng)頁(yè)下載請(qǐng)求獲取方法具體包括:
步驟S103-1:判斷所述第一消息隊(duì)列是否為空;若是,轉(zhuǎn)步驟S103-1循環(huán)等待;否則,轉(zhuǎn)步驟S103-2 ;
步驟S103-2:任務(wù)調(diào)度服務(wù)單元從第一消息隊(duì)列讀取一個(gè)網(wǎng)頁(yè)下載請(qǐng)求,并返回給上述發(fā)出任務(wù)獲取請(qǐng)求的上網(wǎng)客戶端。
[0029]在進(jìn)一步的優(yōu)選實(shí)施例中,為了避免對(duì)上網(wǎng)客戶端正常業(yè)務(wù)的影響,在步驟S103之前,還包括如下判斷過(guò)程: 判斷當(dāng)前上網(wǎng)客戶端是否具有空閑的網(wǎng)絡(luò)連接資源,若是,則執(zhí)行后續(xù)的任務(wù)獲取及網(wǎng)頁(yè)下載過(guò)程,否則,直接結(jié)束流程。
[0030]步驟S104:上網(wǎng)客戶端從因特網(wǎng)下載相應(yīng)的網(wǎng)頁(yè)數(shù)據(jù),保存至任務(wù)調(diào)度服務(wù)單元的第二消息隊(duì)列;
上網(wǎng)客戶端根據(jù)網(wǎng)頁(yè)下載請(qǐng)求中所包括的URL地址參數(shù),從上網(wǎng)客戶端本地請(qǐng)求并下載相應(yīng)的網(wǎng)頁(yè)數(shù)據(jù)(html數(shù)據(jù));然后,將下載的網(wǎng)頁(yè)數(shù)據(jù)發(fā)送并保存至任務(wù)調(diào)度服務(wù)單元設(shè)置的第二消息隊(duì)列(即html消息隊(duì)列)中。
[0031]為保證后續(xù)流程中將網(wǎng)頁(yè)數(shù)據(jù)返回至相應(yīng)的網(wǎng)絡(luò)爬蟲,構(gòu)造key-value對(duì)象放在內(nèi)存?zhèn)溆?將URL唯一標(biāo)識(shí)作為key值,返回的HTML網(wǎng)頁(yè)數(shù)據(jù)作為value)。
[0032]步驟S105:任務(wù)調(diào)度服務(wù)單元將第二消息隊(duì)列中的網(wǎng)頁(yè)數(shù)據(jù)返回至請(qǐng)求網(wǎng)頁(yè)下載的相應(yīng)網(wǎng)絡(luò)爬蟲。
[0033]任務(wù)調(diào)度服務(wù)單元監(jiān)聽上述第二消息隊(duì)列的狀態(tài),當(dāng)有新的網(wǎng)頁(yè)數(shù)據(jù)保存至第二消息隊(duì)列時(shí),讀取并將該新的網(wǎng)頁(yè)數(shù)據(jù)返回至請(qǐng)求網(wǎng)頁(yè)下載的相應(yīng)網(wǎng)絡(luò)爬蟲。
[0034]對(duì)于前述的各方法實(shí)施例,為了描述簡(jiǎn)單,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域的技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)楦鶕?jù)本發(fā)明,某些步驟可以采用其他順序或同時(shí)執(zhí)行;其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,上述方法實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
[0035]系統(tǒng)實(shí)施例:
參照?qǐng)D2,示出了本發(fā)明分布式網(wǎng)頁(yè)下載系統(tǒng)一實(shí)施例的結(jié)構(gòu)框圖,包括任務(wù)調(diào)度服務(wù)單元22、2個(gè)以上的網(wǎng)絡(luò)爬蟲21以及2個(gè)以上分布在不同地理位置具有不同IP地址的上網(wǎng)客戶端23,任務(wù)調(diào)度服務(wù)單元22與上網(wǎng)客戶端23通過(guò)因特網(wǎng)20連接,其中:
網(wǎng)絡(luò)爬蟲21具體包括:下載請(qǐng)求子單元21-1,用于向任務(wù)調(diào)度服務(wù)單元22發(fā)送網(wǎng)頁(yè)下載請(qǐng)求;以及,數(shù)據(jù)接收子單元21-2,用于接收任務(wù)調(diào)度服務(wù)單元22返回的網(wǎng)頁(yè)數(shù)據(jù);在上述的網(wǎng)頁(yè)下載請(qǐng)求中,下載請(qǐng)求參數(shù)包括有待下載網(wǎng)頁(yè)的URL地址;
在具體實(shí)施時(shí),網(wǎng)絡(luò)爬蟲21與任務(wù)調(diào)度服務(wù)單元22可以部署在同一局域網(wǎng)中,并建立長(zhǎng)連接;也可以部署在不同的網(wǎng)絡(luò)中,并根據(jù)需要臨時(shí)建立連接。
[0036]對(duì)于在需要下載網(wǎng)頁(yè)數(shù)據(jù)時(shí)臨時(shí)建立連接的方案,網(wǎng)絡(luò)爬蟲21還包括:連接子單元21-3,用于向任務(wù)調(diào)度服務(wù)單元22發(fā)起TCP連接,并保持該連接;此時(shí),數(shù)據(jù)接收子單元21-2收到任務(wù)調(diào)度服務(wù)單元22返回對(duì)應(yīng)的網(wǎng)頁(yè)數(shù)據(jù)后,斷開網(wǎng)絡(luò)爬蟲21與任務(wù)調(diào)度服務(wù)單元22的連接。
[0037]任務(wù)調(diào)度服務(wù)單元22具體包括:第一消息隊(duì)列22-1,用于接收并保存網(wǎng)絡(luò)爬蟲21發(fā)送的網(wǎng)頁(yè)下載請(qǐng)求;第二消息隊(duì)列22-2,用于接收并保存上網(wǎng)客戶端23下載的網(wǎng)頁(yè)數(shù)據(jù);以及,隊(duì)列監(jiān)控子單元22-3,用于監(jiān)聽第二消息隊(duì)列22-2的狀態(tài),當(dāng)有新的網(wǎng)頁(yè)數(shù)據(jù)保存至第二消息隊(duì)列時(shí),讀取該新的網(wǎng)頁(yè)數(shù)據(jù),并返回至請(qǐng)求網(wǎng)頁(yè)下載的相應(yīng)網(wǎng)絡(luò)爬蟲21。
[0038]上網(wǎng)客戶端23具體包括:任務(wù)獲取子單元23-1,用于從任務(wù)調(diào)度服務(wù)單元22的第一消息隊(duì)列22-1獲取網(wǎng)頁(yè)下載請(qǐng)求;以及,下載子單元23-2,用于根據(jù)網(wǎng)頁(yè)下載請(qǐng)求所包括的URL地址通過(guò)互聯(lián)網(wǎng)20下載相應(yīng)的網(wǎng)頁(yè)數(shù)據(jù),并保存至任務(wù)調(diào)度服務(wù)單元22設(shè)置的第二消息隊(duì)列22-2。
[0039]任務(wù)獲取子單元23-1實(shí)現(xiàn)方法具體為:判斷第一消息隊(duì)列22-1的狀態(tài);當(dāng)?shù)谝幌㈥?duì)列22-1不為空時(shí),請(qǐng)求任務(wù)調(diào)度服務(wù)單元22從第一消息隊(duì)列22-1中讀取一個(gè)網(wǎng)頁(yè)下載請(qǐng)求;當(dāng)?shù)谝幌㈥?duì)列22-1為空時(shí),循環(huán)等待直至第一消息隊(duì)列22-1不為空。
[0040]在進(jìn)一步的系統(tǒng)實(shí)施例中,上網(wǎng)客戶端23還包括:網(wǎng)絡(luò)監(jiān)控子單元23-3,用于監(jiān)控上網(wǎng)客戶端23網(wǎng)絡(luò)狀態(tài);當(dāng)上網(wǎng)客戶端23具有空閑的網(wǎng)絡(luò)連接資源時(shí),調(diào)度任務(wù)獲取子單元23-1和下載子單元23-2執(zhí)行相應(yīng)的任務(wù)獲取和網(wǎng)頁(yè)下載功能。
[0041 ] 參照?qǐng)D3,示出了上述分布式網(wǎng)頁(yè)下載系統(tǒng)實(shí)施例的業(yè)務(wù)邏輯示意圖,其業(yè)務(wù)執(zhí)行過(guò)程包括:
1、爬蟲發(fā)起TCP連接,將URL發(fā)送給調(diào)度主服務(wù),保持連接,等待回應(yīng);
2、調(diào)度主服務(wù)計(jì)算URL的特征值(如可取其MD5值作為特征值,也可以采用其他計(jì)算方式)作為唯一標(biāo)識(shí),一起發(fā)送至消息隊(duì)列;
3、上網(wǎng)客戶端主動(dòng)請(qǐng)求URL消息隊(duì)列,如果URL消息隊(duì)列不為空,則返回一個(gè)URL任務(wù)給上網(wǎng)客戶端;否則等待直至URL消息隊(duì)列不為空;在獲取一個(gè)URL后,上網(wǎng)客戶端在本地發(fā)起HTTP請(qǐng)求,然后將請(qǐng)求返回的HTML網(wǎng)頁(yè)及對(duì)應(yīng)URL的唯一標(biāo)識(shí)(URL特征值)發(fā)送至HTML消息隊(duì)列;
4、調(diào)度主服務(wù)主動(dòng)監(jiān)聽HTML消息隊(duì)列,一旦有新的消息入隊(duì),立即讀出,否則繼續(xù)等待直至HTML消息隊(duì)列不為空為止。
[0042]5、調(diào)度主服務(wù)通過(guò)URL唯一標(biāo)識(shí)檢索內(nèi)存,發(fā)現(xiàn)某TCP連接發(fā)起的URL對(duì)應(yīng)特征的HTML網(wǎng)頁(yè)數(shù)據(jù)已經(jīng)返回,立即將該HTML網(wǎng)頁(yè)數(shù)據(jù)發(fā)送給網(wǎng)絡(luò)爬蟲;至此,完成了整個(gè)網(wǎng)絡(luò)爬蟲請(qǐng)求過(guò)程。
[0043]需要說(shuō)明的是,上述系統(tǒng)實(shí)施例屬于優(yōu)選實(shí)施例,所涉及的單元并不一定是本發(fā)明所必須的。
[0044]本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。對(duì)于本發(fā)明的系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說(shuō)明即可。
[0045]以上對(duì)本發(fā)明所提供的一種分布式網(wǎng)頁(yè)下載方法和系統(tǒng),進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
【權(quán)利要求】
1.一種分布式網(wǎng)頁(yè)下載方法,其特征在于,執(zhí)行所述方法的系統(tǒng)包括任務(wù)調(diào)度服務(wù)單元、2個(gè)以上的網(wǎng)絡(luò)爬蟲以及2個(gè)以上分布在不同地理位置具有不同IP地址的上網(wǎng)客戶端,所述方法包括: 所述網(wǎng)絡(luò)爬蟲向任務(wù)調(diào)度服務(wù)單元發(fā)送網(wǎng)頁(yè)下載請(qǐng)求,所述下載請(qǐng)求參數(shù)包括所述網(wǎng)頁(yè)的URL地址; 所述任務(wù)調(diào)度服務(wù)單元接收并將上述網(wǎng)頁(yè)下載請(qǐng)求保存至第一消息隊(duì)列; 所述上網(wǎng)客戶端從所述任務(wù)調(diào)度服務(wù)單元的第一消息隊(duì)列獲取一個(gè)網(wǎng)頁(yè)下載請(qǐng)求,根據(jù)所述URL地址下載相應(yīng)的網(wǎng)頁(yè)數(shù)據(jù),保存至所述任務(wù)調(diào)度服務(wù)單元的第二消息隊(duì)列; 所述任務(wù)調(diào)度服務(wù)單元將所述第二消息隊(duì)列中的網(wǎng)頁(yè)數(shù)據(jù)返回至請(qǐng)求網(wǎng)頁(yè)下載的相應(yīng)網(wǎng)絡(luò)爬蟲。
2.如權(quán)利要求1所述的方法,其特征在于,在所述網(wǎng)絡(luò)爬蟲向任務(wù)調(diào)度服務(wù)單元發(fā)送網(wǎng)頁(yè)下載請(qǐng)求步驟之前,還包括: 所述網(wǎng)絡(luò)爬蟲向任務(wù)調(diào)度服務(wù)單元發(fā)起TCP連接,并保持連接,直至收到任務(wù)調(diào)度服務(wù)單元返回對(duì)應(yīng)的網(wǎng)頁(yè)數(shù)據(jù)。
3.如權(quán)利要求1所述的方法,其特征在于,所述上網(wǎng)客戶端從所述任務(wù)調(diào)度服務(wù)單元的第一消息隊(duì)列獲取一個(gè)網(wǎng)頁(yè)下載請(qǐng)求,具體包括: 判斷所述第一消息隊(duì)列是否為空; 若是,則循環(huán)等待直至所述第一消息隊(duì)列不為空;否則,所述任務(wù)調(diào)度服務(wù)單元從第一消息隊(duì)列讀取一個(gè)網(wǎng)頁(yè)下載請(qǐng)求,并返回給所述上網(wǎng)客戶端。
4.如權(quán)利要求1所述的方法,其特征在于,所述任務(wù)調(diào)度服務(wù)單元將所述第二消息隊(duì)列中的網(wǎng)頁(yè)數(shù)據(jù)返回至請(qǐng)求網(wǎng)頁(yè)下載的相應(yīng)網(wǎng)絡(luò)爬蟲,具體包括: 所述任務(wù)調(diào)度服務(wù)單元監(jiān)聽第二消息隊(duì)列的狀態(tài),當(dāng)有新的網(wǎng)頁(yè)數(shù)據(jù)保存至第二消息隊(duì)列時(shí),讀取該新的網(wǎng)頁(yè)數(shù)據(jù),并返回至請(qǐng)求網(wǎng)頁(yè)下載的相應(yīng)網(wǎng)絡(luò)爬蟲。
5.如權(quán)利要求1所述的方法,其特征在于,向任務(wù)調(diào)度服務(wù)單元發(fā)起獲取網(wǎng)頁(yè)下載請(qǐng)求的上網(wǎng)客戶端具有空閑的網(wǎng)絡(luò)連接資源。
6.一種分布式網(wǎng)頁(yè)下載系統(tǒng),其特征在于,包括任務(wù)調(diào)度服務(wù)單元、2個(gè)以上的網(wǎng)絡(luò)爬蟲以及2個(gè)以上分布在不同地理位置具有不同IP地址的上網(wǎng)客戶端,所述任務(wù)調(diào)度服務(wù)單元與所述上網(wǎng)客戶端通過(guò)因特網(wǎng)連接,其中: 所述網(wǎng)絡(luò)爬蟲用于向任務(wù)調(diào)度服務(wù)單元發(fā)送網(wǎng)頁(yè)下載請(qǐng)求,以及接收所述任務(wù)調(diào)度服務(wù)單元返回的網(wǎng)頁(yè)數(shù)據(jù);所述下載請(qǐng)求參數(shù)包括所述網(wǎng)頁(yè)的URL地址; 所述上網(wǎng)客戶端用于從所述任務(wù)調(diào)度服務(wù)單元的第一消息隊(duì)列獲取一個(gè)網(wǎng)頁(yè)下載請(qǐng)求,根據(jù)所述URL地址通過(guò)互聯(lián)網(wǎng)下載相應(yīng)的網(wǎng)頁(yè)數(shù)據(jù),并保存至所述任務(wù)調(diào)度服務(wù)單元的第二消息隊(duì)列; 所述任務(wù)調(diào)度服務(wù)單元用于接收所述網(wǎng)絡(luò)爬蟲發(fā)送的網(wǎng)頁(yè)下載請(qǐng)求,并保存至第一消息隊(duì)列;以及,將所述第二消息隊(duì)列中的網(wǎng)頁(yè)數(shù)據(jù)返回至請(qǐng)求網(wǎng)頁(yè)下載的相應(yīng)網(wǎng)絡(luò)爬蟲。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述網(wǎng)絡(luò)爬蟲具體包括: 連接子單元,用于向任務(wù)調(diào)度服務(wù)單元發(fā)起TCP連接; 下載請(qǐng)求子單元,用于向任務(wù)調(diào)度服務(wù)單元發(fā)送網(wǎng)頁(yè)下載請(qǐng)求; 數(shù)據(jù)接收子單元,用于接收任務(wù)調(diào)度服務(wù)單元返回的對(duì)應(yīng)網(wǎng)頁(yè)數(shù)據(jù),并在網(wǎng)頁(yè)數(shù)據(jù)接收完成后斷開所述網(wǎng)絡(luò)爬蟲與任務(wù)調(diào)度服務(wù)單元的連接。
8.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述任務(wù)調(diào)度服務(wù)單元具體包括: 第一消息隊(duì)列,用于接收并保存所述網(wǎng)絡(luò)爬蟲發(fā)送的網(wǎng)頁(yè)下載請(qǐng)求; 第二消息隊(duì)列,用于接收并保存所述上網(wǎng)客戶端下載的網(wǎng)頁(yè)數(shù)據(jù); 隊(duì)列監(jiān)控子單元,用于監(jiān)聽所述第二消息隊(duì)列的狀態(tài),當(dāng)有新的網(wǎng)頁(yè)數(shù)據(jù)保存至第二消息隊(duì)列時(shí),讀取該新的網(wǎng)頁(yè)數(shù)據(jù),并返回至請(qǐng)求網(wǎng)頁(yè)下載的相應(yīng)網(wǎng)絡(luò)爬蟲。
9.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述上網(wǎng)客戶端具體包括: 任務(wù)獲取子單元,用于判斷所述第一消息隊(duì)列的狀態(tài);當(dāng)?shù)谝幌㈥?duì)列不為空時(shí),請(qǐng)求所述任務(wù)調(diào)度服務(wù)單元從第一消息隊(duì)列讀取一個(gè)網(wǎng)頁(yè)下載請(qǐng)求;當(dāng)?shù)谝幌㈥?duì)列為空時(shí),循環(huán)等待直至所述第一消息隊(duì)列不為空; 下載子單元,用于根據(jù)所述任務(wù)獲取子單元獲取的網(wǎng)頁(yè)下載請(qǐng)求中包括的URL地址通過(guò)互聯(lián)網(wǎng)下載相應(yīng)的網(wǎng)頁(yè)數(shù)據(jù),并保存至所述任務(wù)調(diào)度服務(wù)單元的第二消息隊(duì)列。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述上網(wǎng)客戶端還包括網(wǎng)絡(luò)監(jiān)控子單元,用于監(jiān)控所述上網(wǎng)客戶端網(wǎng)絡(luò)狀態(tài);當(dāng)所述上網(wǎng)客戶端具有空閑的網(wǎng)絡(luò)連接資源時(shí),調(diào)度所述任務(wù)獲取子單元 下載子單元執(zhí)行相應(yīng)的任務(wù)獲取和網(wǎng)頁(yè)下載功能。
【文檔編號(hào)】H04L29/08GK103873597SQ201410149901
【公開日】2014年6月18日 申請(qǐng)日期:2014年4月15日 優(yōu)先權(quán)日:2014年4月15日
【發(fā)明者】何培林, 湯偉賓, 陳晨, 章正道, 林勝通 申請(qǐng)人:廈門市美亞柏科信息股份有限公司