国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      執(zhí)行爬取任務(wù)的方法和裝置制造方法

      文檔序號:6638937閱讀:267來源:國知局
      執(zhí)行爬取任務(wù)的方法和裝置制造方法
      【專利摘要】本發(fā)明公開了一種執(zhí)行爬取任務(wù)的方法和裝置。其中,該方法包括:第一終端將接收到的爬取請求發(fā)送至云服務(wù)器的云端分布式隊(duì)列;第二終端從云端分布式隊(duì)列中讀取爬取請求,其中,第二終端為云終端;第二終端按照爬取請求進(jìn)行網(wǎng)絡(luò)資源的爬取,并將爬取結(jié)果數(shù)據(jù)保存至數(shù)據(jù)庫;第一終端從數(shù)據(jù)庫讀取爬取結(jié)果數(shù)據(jù)。采用本發(fā)明,解決了現(xiàn)有技術(shù)中使用單機(jī)執(zhí)行爬取任務(wù)效率低且IP地址容易被屏蔽的問題,達(dá)到了在避免被服務(wù)器屏蔽的情況下提高執(zhí)行爬取請求效率的效果。
      【專利說明】執(zhí)行爬取任務(wù)的方法和裝置

      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,具體而言,涉及一種執(zhí)行爬取任務(wù)的方法和裝置。

      【背景技術(shù)】
      [0002]目前,爬蟲程序是構(gòu)建互聯(lián)網(wǎng)搜索引擎的基本組件,具備分析并爬取網(wǎng)站上網(wǎng)頁資源或其他資源的功能??梢詫⑴老x程序分為鏈接分析模塊與爬取模塊,其中,爬取模塊負(fù)責(zé)根據(jù)爬取請求獲取爬取結(jié)果。常見的爬取模塊的實(shí)現(xiàn),是將爬取請求在本機(jī)執(zhí)行,即由執(zhí)行爬蟲程序的計(jì)算機(jī)直接向待爬取的網(wǎng)址或者服務(wù)器發(fā)出網(wǎng)絡(luò)請求,并接收服務(wù)器對于該請求的響應(yīng)內(nèi)容。
      [0003]現(xiàn)有技術(shù)主要依靠本地計(jì)算機(jī)來執(zhí)行爬取請求,所以,頁面爬取完全依賴于本機(jī)端口,而本機(jī)端口有限,會影響爬取效率,且單機(jī)的帶寬有限,無法同時(shí)發(fā)起較多的網(wǎng)絡(luò)請求,因此無法通過大規(guī)模并行爬取提高爬取效率。由上可知,使用單機(jī)執(zhí)行爬取請求時(shí),爬取請求的執(zhí)行速度和質(zhì)量將受到本機(jī)端口和網(wǎng)絡(luò)資源的限制。另外,當(dāng)爬取請求集中在一個(gè)網(wǎng)站時(shí),頻繁請求將導(dǎo)致本機(jī)過度沖擊遠(yuǎn)端Web服務(wù)器,從而可能被該服務(wù)器端所屏蔽,且一旦屏蔽發(fā)生,將極大影響爬取質(zhì)量和效果。
      [0004]針對現(xiàn)有技術(shù)中使用單機(jī)執(zhí)行爬取任務(wù)效率低且IP地址容易被屏蔽的問題,目前尚未提出有效的解決方案。


      【發(fā)明內(nèi)容】

      [0005]本發(fā)明的主要目的在于提供一種執(zhí)行爬取任務(wù)的方法和裝置,以解決現(xiàn)有技術(shù)中使用單機(jī)執(zhí)行爬取任務(wù)效率低且IP地址容易被屏蔽的問題。
      [0006]為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種執(zhí)行爬取任務(wù)的方法。根據(jù)本發(fā)明的執(zhí)行爬取任務(wù)的方法包括:第一終端將接收到的爬取請求發(fā)送至云服務(wù)器的云端分布式隊(duì)列;第二終端從云端分布式隊(duì)列中讀取爬取請求,其中,第二終端為云終端;第二終端按照爬取請求進(jìn)行網(wǎng)絡(luò)資源的爬取,并將爬取結(jié)果數(shù)據(jù)保存至數(shù)據(jù)庫;第一終端從數(shù)據(jù)庫讀取爬取結(jié)果數(shù)據(jù)。
      [0007]進(jìn)一步地,第一終端將接收到的爬取請求發(fā)送至云服務(wù)器的云端分布式隊(duì)列包括:為爬取請求設(shè)置第一請求標(biāo)簽;將第一請求標(biāo)簽和爬取請求發(fā)送至云端分布式隊(duì)列;以及保存爬取請求和第一請求標(biāo)簽至第一終端的數(shù)據(jù)表。
      [0008]進(jìn)一步地,在第二終端按照爬取請求進(jìn)行網(wǎng)絡(luò)資源的爬取,并將爬取結(jié)果數(shù)據(jù)保存至數(shù)據(jù)庫的同時(shí)或之后,方法還包括:將爬取請求的第一請求標(biāo)簽和爬取結(jié)果數(shù)據(jù)的存儲地址保存至云服務(wù)器的爬取完成隊(duì)列。
      [0009]進(jìn)一步地,第一終端從數(shù)據(jù)庫讀取爬取結(jié)果數(shù)據(jù)包括:從爬取完成隊(duì)列中獲取第一請求標(biāo)簽及其對應(yīng)的存儲地址;從存儲地址對應(yīng)數(shù)據(jù)庫的存儲位置中讀取爬取結(jié)果數(shù)據(jù)。
      [0010]進(jìn)一步地,在第一終端從數(shù)據(jù)庫讀取爬取結(jié)果數(shù)據(jù)之后,方法還包括:從數(shù)據(jù)表中讀取第一請求標(biāo)簽的爬取請求;輸出第一請求標(biāo)簽的爬取請求和爬取結(jié)果數(shù)據(jù)。
      [0011]為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明實(shí)施例的另一方面,提供了一種執(zhí)行爬取任務(wù)的裝置。根據(jù)本發(fā)明的執(zhí)行爬取任務(wù)的裝置包括:發(fā)送模塊,用于第一終端將接收到的爬取請求發(fā)送至云服務(wù)器的云端分布式隊(duì)列;第一讀取模塊,用于第二終端從云端分布式隊(duì)列中讀取爬取請求,其中,第二終端為云終端;爬取模塊,用于第二終端按照爬取請求進(jìn)行網(wǎng)絡(luò)資源的爬取,并將爬取結(jié)果數(shù)據(jù)保存至數(shù)據(jù)庫;第二讀取模塊,用于第一終端從數(shù)據(jù)庫讀取爬取結(jié)果數(shù)據(jù)。
      [0012]進(jìn)一步地,發(fā)送模塊包括:設(shè)置模塊,用于為爬取請求設(shè)置第一請求標(biāo)簽;發(fā)送子模塊,用于將第一請求標(biāo)簽和爬取請求發(fā)送至云端分布式隊(duì)列;以及第一保存模塊,用于保存爬取請求和第一請求標(biāo)簽至第一終端的數(shù)據(jù)表。
      [0013]進(jìn)一步地,裝置還包括:第二保存模塊,用于在第二終端按照爬取請求進(jìn)行網(wǎng)絡(luò)資源的爬取,并將爬取結(jié)果數(shù)據(jù)保存至數(shù)據(jù)庫的同時(shí)或之后,將爬取請求的第一請求標(biāo)簽和爬取結(jié)果數(shù)據(jù)的存儲地址保存至云服務(wù)器的爬取完成隊(duì)列。
      [0014]進(jìn)一步地,第二讀取模塊包括:獲取模塊,用于從爬取完成隊(duì)列中獲取第一請求標(biāo)簽及其對應(yīng)的存儲地址;第二讀取子模塊,用于從存儲地址對應(yīng)數(shù)據(jù)庫的存儲位置中讀取爬取結(jié)果數(shù)據(jù)。
      [0015]進(jìn)一步地,裝置還包括:第三讀取模塊,用于在第一終端從數(shù)據(jù)庫讀取爬取結(jié)果數(shù)據(jù)之后,從數(shù)據(jù)表中讀取第一請求標(biāo)簽的爬取請求;輸出模塊,用于輸出第一請求標(biāo)簽的爬取請求和爬取結(jié)果數(shù)據(jù)。
      [0016]采用本發(fā)明,將第一終端(可以是本地計(jì)算機(jī))作為一個(gè)代理,負(fù)責(zé)上傳爬取請求而不具體地執(zhí)行爬取請求,使用云端的第二終端去執(zhí)行具體地爬取任務(wù),通過多個(gè)云終端并行執(zhí)行爬取請求,從而不再受本地資源和能力的局限,從而達(dá)到提升整體爬取效率的效果;另外,云端資源具有分布式特性,能夠有效避免服務(wù)器對執(zhí)行大量爬取請求時(shí)的屏蔽。采用本發(fā)明,解決了現(xiàn)有技術(shù)中使用單機(jī)執(zhí)行爬取任務(wù)效率低且IP地址容易被屏蔽的問題,達(dá)到了在避免被服務(wù)器屏蔽的情況下提高執(zhí)行爬取請求效率的效果。

      【專利附圖】

      【附圖說明】
      [0017]構(gòu)成本申請的一部分的附圖用來提供對本發(fā)明的進(jìn)一步理解,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
      [0018]圖1是根據(jù)本發(fā)明實(shí)施例的執(zhí)行爬取任務(wù)的方法的流程圖;以及
      [0019]圖2是根據(jù)本發(fā)明實(shí)施例的執(zhí)行爬取任務(wù)的裝置的示意圖。

      【具體實(shí)施方式】
      [0020]需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。
      [0021 ] 為了使本【技術(shù)領(lǐng)域】的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
      [0022]需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
      [0023]本發(fā)明實(shí)施例提供了一種執(zhí)行爬取任務(wù)的方法。圖1是根據(jù)本發(fā)明實(shí)施例的執(zhí)行爬取任務(wù)的方法的流程圖。如圖1所示,該方法可以包括步驟如下:
      [0024]步驟S102,第一終端將接收到的爬取請求發(fā)送至云服務(wù)器的云端分布式隊(duì)列。
      [0025]步驟S104,第二終端從云端分布式隊(duì)列中讀取爬取請求,其中,第二終端為云終端。
      [0026]步驟S106,第二終端按照爬取請求進(jìn)行網(wǎng)絡(luò)資源的爬取,并將爬取結(jié)果數(shù)據(jù)保存至數(shù)據(jù)庫。
      [0027]步驟S108,第一終端從數(shù)據(jù)庫讀取爬取結(jié)果數(shù)據(jù)。
      [0028]采用本發(fā)明,在第一終端接收到爬取請求時(shí),為每一個(gè)爬取請求設(shè)置第一請求標(biāo)簽并將爬取請求以及對應(yīng)的第一請求標(biāo)簽發(fā)送至云服務(wù)器的云端分布式隊(duì)列中,第二終端從云端分布式隊(duì)列中讀取爬取請求及對應(yīng)的第一請求標(biāo)簽,并根據(jù)爬取請求對對應(yīng)的服務(wù)器進(jìn)行爬取得到爬取結(jié)果數(shù)據(jù),并將爬取結(jié)果數(shù)據(jù)保存至數(shù)據(jù)庫,第一終端從數(shù)據(jù)庫中獲取爬取結(jié)果數(shù)據(jù)。采用本發(fā)明,將第一終端(可以是本地計(jì)算機(jī))作為一個(gè)代理,負(fù)責(zé)上傳爬取請求而不具體地執(zhí)行爬取請求,使用云端的第二終端去執(zhí)行具體地爬取任務(wù),通過多個(gè)云終端并行執(zhí)行爬取請求,從而不再受本地資源和能力的局限,從而達(dá)到提升整體爬取效率的效果;另外,云端資源具有分布式特性,能夠有效避免服務(wù)器對執(zhí)行大量爬取請求時(shí)的屏蔽。采用本發(fā)明,解決了現(xiàn)有技術(shù)中使用單機(jī)執(zhí)行爬取任務(wù)效率低且IP地址容易被屏蔽的問題,達(dá)到了在避免被服務(wù)器屏蔽的情況下提高執(zhí)行爬取請求效率的效果。
      [0029]其中,上述實(shí)施例中的數(shù)據(jù)庫可以是BLOB數(shù)據(jù)庫,該數(shù)據(jù)庫為使用二進(jìn)制保存數(shù)據(jù)的數(shù)據(jù)庫。
      [0030]在本發(fā)明的上述實(shí)施例中,第一終端將接收到的爬取請求發(fā)送至云服務(wù)器的云端分布式隊(duì)列可以包括:為爬取請求設(shè)置第一請求標(biāo)簽;將第一請求標(biāo)簽和爬取請求發(fā)送至云端分布式隊(duì)列;以及保存爬取請求和第一請求標(biāo)簽至第一終端的數(shù)據(jù)表。
      [0031]具體地,當(dāng)?shù)谝唤K端接收到爬取請求之后,為該請求生成一個(gè)第一請求標(biāo)簽,并將上述爬取請求和對應(yīng)的第一請求標(biāo)簽放入第一終端的數(shù)據(jù)表,然后將上述爬取請求(即請求實(shí)體)和對應(yīng)的第一請求標(biāo)簽發(fā)送至云端分布式隊(duì)列以便第二終端能夠及時(shí)獲取爬取請求。
      [0032]在第一終端維護(hù)一個(gè)鍵為第一請求標(biāo)簽,值為爬取請求的哈希表(即上述實(shí)施例中的數(shù)據(jù)表),將完成上傳的爬取請求及其第一請求標(biāo)簽放置入該哈希表中。
      [0033]通過本發(fā)明的上述實(shí)施例,第一終端可以根據(jù)爬取請求的第一請求標(biāo)簽及時(shí)獲取每一個(gè)爬取請求的執(zhí)行狀態(tài),若該爬取請求已經(jīng)執(zhí)行完畢,第一終端從數(shù)據(jù)庫中獲取爬取結(jié)果數(shù)據(jù),通過第二終端執(zhí)行爬取任務(wù),達(dá)到了提高執(zhí)行爬取請求效率的效果。
      [0034]在本發(fā)明的上述實(shí)施例中,在第二終端按照爬取請求進(jìn)行網(wǎng)絡(luò)資源的爬取,并將爬取結(jié)果數(shù)據(jù)保存至數(shù)據(jù)庫之后,方法還可以包括:將爬取請求的第一請求標(biāo)簽和爬取結(jié)果數(shù)據(jù)的存儲地址保存至云服務(wù)器的爬取完成隊(duì)列。
      [0035]在本發(fā)明的上述實(shí)施例中,第二終端爬取完成后,將爬取結(jié)果數(shù)據(jù)存入云端分布式BLOB數(shù)據(jù)庫,并將請求標(biāo)簽和爬取結(jié)果的地址發(fā)送至爬取完成隊(duì)列。第一終端從爬取完成隊(duì)列中讀取到完成信息后,再根據(jù)完成信息中的地址去云端BLOB數(shù)據(jù)庫讀取具體的爬取結(jié)果。
      [0036]其中,上述實(shí)施例中的爬取結(jié)果數(shù)據(jù)的存儲地址為云端存儲URL (即,統(tǒng)一資源定位符)地址;爬取完成隊(duì)列同樣是位于云端的分布式隊(duì)列。
      [0037]具體地,第二終端根據(jù)從云端分布式隊(duì)列中讀取的爬取請求從對應(yīng)的服務(wù)器讀取響應(yīng)數(shù)據(jù),然后將其存儲在BLOB數(shù)據(jù)庫中,并將該爬取請求的響應(yīng)數(shù)據(jù)的存儲地址以及該請求對應(yīng)的第一請求標(biāo)簽存儲至云服務(wù)器的爬取完成隊(duì)列。其中,爬取請求的響應(yīng)數(shù)據(jù)即爬取結(jié)果數(shù)據(jù)。
      [0038]通過本發(fā)明的上述實(shí)施例,將爬行結(jié)果數(shù)據(jù)和其對應(yīng)的存儲地址分別存儲在BLOB數(shù)據(jù)庫和爬取完成隊(duì)列,能夠提高第一終端查詢和讀取爬行結(jié)果數(shù)據(jù)的效率。其中,BLOB形式的數(shù)據(jù)庫為云端的數(shù)據(jù)庫。
      [0039]根據(jù)本發(fā)明的上述實(shí)施例,第一終端從數(shù)據(jù)庫讀取爬取結(jié)果數(shù)據(jù)可以包括:從爬取完成隊(duì)列中獲取第一請求標(biāo)簽及其對應(yīng)的存儲地址;從存儲地址對應(yīng)數(shù)據(jù)庫的存儲位置中讀取爬取結(jié)果數(shù)據(jù)。
      [0040]具體地,第一終端從爬取完成隊(duì)列中獲取第一請求標(biāo)簽以及該第一請求標(biāo)簽對應(yīng)的爬取請求的爬取結(jié)果數(shù)據(jù)的地址,然后根據(jù)該地址從數(shù)據(jù)庫獲取爬取結(jié)果數(shù)據(jù)。通過上述實(shí)施例,第一終端不再需要具體地執(zhí)行爬取請求,減少了本地操作,節(jié)省了大量的資源,采用本發(fā)明的方法可以將本地資源用于讀取爬取結(jié)果數(shù)據(jù),提高了執(zhí)行爬取請求的效率。
      [0041]根據(jù)本發(fā)明的上述實(shí)施例,在第一終端從數(shù)據(jù)庫讀取爬取結(jié)果數(shù)據(jù)之后,方法還可以包括:從數(shù)據(jù)表中讀取第一請求標(biāo)簽的爬取請求;輸出第一請求標(biāo)簽的爬取請求和爬取結(jié)果數(shù)據(jù)。
      [0042]具體地,第一終端的頁面爬取模塊從爬取完成隊(duì)列中獲取完成的爬取請求的請求標(biāo)簽,并從相應(yīng)的云端存儲URL讀取爬取結(jié)果數(shù)據(jù);可選地,頁面爬取模塊可以根據(jù)請求標(biāo)簽從哈希表中查找爬取請求的信息,將從云端BLOB數(shù)據(jù)庫下載的爬取結(jié)果數(shù)據(jù)一并輸出。
      [0043]在第一終端從數(shù)據(jù)庫讀取完爬取結(jié)果數(shù)據(jù)并存入數(shù)據(jù)表中后,需要將爬取結(jié)果數(shù)據(jù)返回至爬取請求的發(fā)起者,具體是根據(jù)第一請求標(biāo)簽從數(shù)據(jù)表讀取已經(jīng)執(zhí)行完畢的爬取請求和對應(yīng)的爬取結(jié)果數(shù)據(jù),將上述請求和數(shù)據(jù)下發(fā)至該請求的發(fā)起者。
      [0044]需要進(jìn)一步說明的是,在本發(fā)明的上述實(shí)施例中可以包括多個(gè)第一終端,每個(gè)第一終端上均可以維護(hù)一個(gè)請求池(即上述實(shí)施例中的哈希表),請求池中記錄了爬取請求和第一請求標(biāo)簽。當(dāng)從爬取完成隊(duì)列讀取到完成信息時(shí),可以利用請求標(biāo)簽和第一終端的請求池做一個(gè)匹配,找到對應(yīng)的原始的爬取請求。如果在第一終端的請求池里找不到同樣的請求標(biāo)簽的爬取請求,則說明這個(gè)爬取完成的請求是其他第一終端所提交的,該第一終端可將此完成的請求信息(即上述實(shí)施例中的爬取結(jié)果數(shù)據(jù))還回爬取完成隊(duì)列中,以便其他的第一終端獲取。
      [0045]在本發(fā)明的上述實(shí)施例中,采用分布式隊(duì)列進(jìn)行本地代理與云端爬蟲進(jìn)行交互,如上傳爬取請求、通知爬取完成;并且云端第二終端的爬蟲將爬取結(jié)果保存在云端BLOB數(shù)據(jù)庫,本地爬取模塊接收到爬取完成的通知后,按需進(jìn)行下載。在上述實(shí)施例中,使用請求標(biāo)簽在分布式架構(gòu)下標(biāo)記爬取條目,以方便在本地與云端將請求與爬取結(jié)果相對應(yīng)。
      [0046]在該實(shí)施例中,第一終端的爬取模塊實(shí)質(zhì)上成為了一個(gè)代理,其負(fù)載分發(fā)爬取請求和獲取爬取結(jié)果,不參與具體地爬取工作,具體地爬取工作由云端爬蟲集群進(jìn)行。因此,本地的網(wǎng)絡(luò)資源瓶頸不復(fù)存在,在可水平擴(kuò)展的云端爬蟲集群配合下,可以大幅度提升爬取速度和效率,避免了單臺機(jī)器對服務(wù)器反復(fù)高頻度請求而遭屏蔽的風(fēng)險(xiǎn)。
      [0047]需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
      [0048]本發(fā)明實(shí)施例還提供了一種執(zhí)行爬取任務(wù)的裝置。圖2是根據(jù)本發(fā)明實(shí)施例的執(zhí)行爬取任務(wù)的裝置的示意圖。如圖2所示,該裝置可以包括如下模塊:發(fā)送模塊10、第一讀取模塊20、爬取模塊30以及第二讀取模塊40。
      [0049]其中,發(fā)送模塊10用于第一終端將接收到的爬取請求發(fā)送至云服務(wù)器的云端分布式隊(duì)列;第一讀取模塊20用于第二終端從云端分布式隊(duì)列中讀取爬取請求,其中,第二終端為云終端;爬取模塊30用于第二終端按照爬取請求進(jìn)行網(wǎng)絡(luò)資源的爬取,并將爬取結(jié)果數(shù)據(jù)保存至數(shù)據(jù)庫;第二讀取模塊40用于第一終端從數(shù)據(jù)庫讀取爬取結(jié)果數(shù)據(jù)。
      [0050]采用本發(fā)明,當(dāng)?shù)谝唤K端接收到爬取請求時(shí),發(fā)送模塊為每一個(gè)爬取請求設(shè)置第一請求標(biāo)簽并將爬取請求以及對應(yīng)的第一請求標(biāo)簽發(fā)送至云服務(wù)器的云端分布式陣列中,并將爬取結(jié)果數(shù)據(jù)保存至數(shù)據(jù)庫,第一讀取模塊從數(shù)據(jù)庫中獲取爬取結(jié)果數(shù)據(jù)。采用本發(fā)明,將第一終端(可以是本地計(jì)算機(jī))作為一個(gè)代理,負(fù)責(zé)上傳爬取請求而不具體地執(zhí)行爬取請求,使用云端的第二終端去執(zhí)行具體地爬取任務(wù),通過多個(gè)云終端并行執(zhí)行爬取請求,從而不再受本地資源和能力的局限,從而達(dá)到提升整體爬取效率的效果;另外,云端資源具有分布式特性,能夠有效避免服務(wù)器對執(zhí)行大量爬取請求時(shí)的屏蔽。采用本發(fā)明,解決了現(xiàn)有技術(shù)中使用單機(jī)執(zhí)行爬取任務(wù)效率低且IP地址容易被屏蔽的問題,達(dá)到了在避免被服務(wù)器屏蔽的情況下提高執(zhí)行爬取請求效率的效果。
      [0051 ] 其中,上述實(shí)施例中的數(shù)據(jù)庫可以是BLOB數(shù)據(jù)庫,該數(shù)據(jù)庫為使用二進(jìn)制保存數(shù)據(jù)的數(shù)據(jù)庫。
      [0052]在本發(fā)明的上述實(shí)施例中,發(fā)送模塊可以包括:設(shè)置模塊,用于為爬取請求設(shè)置第一請求標(biāo)簽;發(fā)送子模塊,用于將第一請求標(biāo)簽和爬取請求發(fā)送至云端分布式隊(duì)列;第一保存模塊,用于保存爬取請求和第一請求標(biāo)簽至第一終端的數(shù)據(jù)表。
      [0053]具體地,當(dāng)?shù)谝唤K端接收到爬取請求之后,為該請求生成一個(gè)第一請求標(biāo)簽,并將上述爬取請求和對應(yīng)的第一請求標(biāo)簽放入第一終端的數(shù)據(jù)表,然后將上述爬取請求(即請求實(shí)體)和對應(yīng)的第一請求標(biāo)簽發(fā)送至云端分布式隊(duì)列以便第二終端能夠及時(shí)獲取爬取請求。
      [0054]在第一終端維護(hù)一個(gè)鍵為第一請求標(biāo)簽,值為爬取請求的哈希表(即上述實(shí)施例中的數(shù)據(jù)表),將完成上傳的爬取請求及其第一請求標(biāo)簽放置入該哈希表中。
      [0055]采用本發(fā)明的上述實(shí)施例,通過設(shè)置模塊為每一個(gè)爬取請求添加第一請求標(biāo)簽,使得第一終端實(shí)質(zhì)上成為了一個(gè)代理,從而讓第一終端將有限的資源用于負(fù)責(zé)上傳爬取請求和獲取爬取結(jié)果,并不參與具體爬取工作,達(dá)到了提升爬取速度和效率的效果,同時(shí)避免了因第一終端對服務(wù)器反復(fù)高頻度的爬取請求而遭屏蔽的風(fēng)險(xiǎn)。
      [0056]在本發(fā)明的上述實(shí)施例中,裝置還可以包括:第二保存模塊,用于在第二終端按照爬取請求進(jìn)行網(wǎng)絡(luò)資源的爬取,并將爬取結(jié)果數(shù)據(jù)保存至數(shù)據(jù)庫的同時(shí)或之后,將爬取請求的第一請求標(biāo)簽和爬取結(jié)果數(shù)據(jù)的存儲地址保存至云服務(wù)器的爬取完成隊(duì)列。
      [0057]在本發(fā)明的上述實(shí)施例中,第二終端爬取完成后,將爬取結(jié)果數(shù)據(jù)存入云端分布式BLOB數(shù)據(jù)庫,并將請求標(biāo)簽和爬取結(jié)果的地址發(fā)送至爬取完成隊(duì)列。第一終端從爬取完成隊(duì)列中讀取到完成信息后,再根據(jù)完成信息中的地址去云端BLOB數(shù)據(jù)庫讀取具體的爬取結(jié)果。
      [0058]其中,上述實(shí)施例中的爬取結(jié)果數(shù)據(jù)的存儲地址為云端存儲URL (即,統(tǒng)一資源定位符)地址;爬取完成隊(duì)列同樣是位于云端的分布式隊(duì)列。
      [0059]根據(jù)本發(fā)明的上述實(shí)施例,第二讀取模塊可以包括:獲取模塊,用于從爬取完成隊(duì)列中獲取第一請求標(biāo)簽及其對應(yīng)的存儲地址;第二讀取子模塊,用于從存儲地址對應(yīng)數(shù)據(jù)庫的存儲位置中讀取爬取結(jié)果數(shù)據(jù)。
      [0060]具體地,獲取模塊從爬取完成隊(duì)列中獲取第一請求標(biāo)簽以及該第一請求標(biāo)簽對應(yīng)的爬取請求的爬取結(jié)果數(shù)據(jù)的地址,然后第二讀取子模塊根據(jù)該地址從數(shù)據(jù)庫獲取爬取結(jié)果數(shù)據(jù)。
      [0061]通過上述實(shí)施例,第一終端不再需要具體地執(zhí)行爬取請求,減少了本地操作,節(jié)省了大量的資源,采用本發(fā)明的方法就可以將本地資源(即第一終端)用于讀取爬取結(jié)果數(shù)據(jù),從而提高了執(zhí)行爬取請求的效率。
      [0062]在上述實(shí)施例中,裝置還包括:第三讀取模塊,用于在第一終端從數(shù)據(jù)庫讀取爬取結(jié)果數(shù)據(jù)之后,從數(shù)據(jù)表中讀取第一請求標(biāo)簽的爬取請求;輸出模塊,用于輸出第一請求標(biāo)簽的爬取請求和爬取結(jié)果數(shù)據(jù)。
      [0063]在第一終端從數(shù)據(jù)庫讀取完爬取結(jié)果數(shù)據(jù)并存入數(shù)據(jù)表中后,需要將爬取結(jié)果數(shù)據(jù)發(fā)送至爬取請求的發(fā)起者,具體是第三讀取模塊根據(jù)第一請求標(biāo)簽從數(shù)據(jù)表讀取已經(jīng)執(zhí)行完畢的爬取請求和對應(yīng)的爬取結(jié)果數(shù)據(jù),然后輸出模塊將上述爬取請求和爬取結(jié)果數(shù)據(jù)下發(fā)至該請求的發(fā)起者。
      [0064]需要進(jìn)一步說明的是,在本發(fā)明的上述實(shí)施例中可以包括多個(gè)第一終端,每個(gè)第一終端上均可以維護(hù)一個(gè)請求池(即上述實(shí)施例中的哈希表),請求池中記錄了爬取請求和第一請求標(biāo)簽。當(dāng)從爬取完成隊(duì)列讀取到完成信息時(shí),可以利用請求標(biāo)簽和第一終端的請求池做一個(gè)匹配,找到對應(yīng)的原始的爬取請求。如果在第一終端的請求池里找不到同樣的請求標(biāo)簽的爬取請求,則說明這個(gè)爬取完成的請求是其他第一終端所提交的,該第一終端可將此完成的請求信息(即上述實(shí)施例中的爬取結(jié)果數(shù)據(jù))還回爬取完成隊(duì)列中,以便其他的第一終端獲取。
      [0065]在本發(fā)明的上述實(shí)施例中,采用分布式隊(duì)列進(jìn)行本地代理與云端爬蟲進(jìn)行交互,如上傳爬取請求、通知爬取完成;并且云端第二終端的爬蟲將爬取結(jié)果保存在云端BLOB數(shù)據(jù)庫,本地爬取模塊接收到爬取完成的通知后,按需進(jìn)行下載。在上述實(shí)施例中,使用請求標(biāo)簽在分布式架構(gòu)下標(biāo)記爬取條目,以方便在本地與云端將請求與爬取結(jié)果相對應(yīng)。
      [0066]本實(shí)施例中所提供的各個(gè)模塊與方法實(shí)施例對應(yīng)步驟所提供的使用方法相同、應(yīng)用場景也可以相同。當(dāng)然,需要注意的是,上述模塊涉及的方案可以不限于上述實(shí)施例中的內(nèi)容和場景,且上述模塊可以運(yùn)行在計(jì)算機(jī)終端或移動終端,可以通過軟件或硬件實(shí)現(xiàn)。
      [0067]從以上的描述中,可以看出,本發(fā)明實(shí)現(xiàn)了如下技術(shù)效果:
      [0068]采用本發(fā)明,當(dāng)?shù)谝唤K端接收到爬取請求時(shí),發(fā)送模塊為每一個(gè)爬取請求設(shè)置第一請求標(biāo)簽并將爬取請求以及對應(yīng)的第一請求標(biāo)簽發(fā)送至云服務(wù)器的云端分布式陣列中,并將爬取結(jié)果數(shù)據(jù)保存至數(shù)據(jù)庫,第一讀取模塊從數(shù)據(jù)庫中獲取爬取結(jié)果數(shù)據(jù)。采用本發(fā)明,將第一終端(可以是本地計(jì)算機(jī))作為一個(gè)代理,負(fù)責(zé)上傳爬取請求而不具體地執(zhí)行爬取請求,使用云端的第二終端去執(zhí)行具體地爬取任務(wù),通過多個(gè)云終端并行執(zhí)行爬取請求,從而不再受本地資源和能力的局限,從而達(dá)到提升整體爬取效率的效果;另外,云端資源具有分布式特性,能夠有效避免服務(wù)器對執(zhí)行大量爬取請求時(shí)的屏蔽。采用本發(fā)明,解決了現(xiàn)有技術(shù)中使用單機(jī)執(zhí)行爬取任務(wù)效率低且IP地址容易被屏蔽的問題,達(dá)到了在避免被服務(wù)器屏蔽的情況下提高執(zhí)行爬取請求效率的效果。
      [0069]顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲在存儲裝置中由計(jì)算裝置來執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
      [0070]需要說明的是,對于前述的各方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
      [0071]在上述實(shí)施例中,對各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
      [0072]在本申請所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的方法,可通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性或其它的形式。
      [0073]作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
      [0074]另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
      [0075]集成的單元如果以軟件功能單元的形式實(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)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
      [0076]以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      【權(quán)利要求】
      1.一種執(zhí)行爬取任務(wù)的方法,其特征在于,包括: 第一終端將接收到的爬取請求發(fā)送至云服務(wù)器的云端分布式隊(duì)列; 第二終端從所述云端分布式隊(duì)列中讀取所述爬取請求,其中,所述第二終端為云終端; 所述第二終端按照所述爬取請求進(jìn)行網(wǎng)絡(luò)資源的爬取,并將爬取結(jié)果數(shù)據(jù)保存至數(shù)據(jù)庫; 所述第一終端從所述數(shù)據(jù)庫讀取所述爬取結(jié)果數(shù)據(jù)。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,第一終端將接收到的爬取請求發(fā)送至云服務(wù)器的云端分布式隊(duì)列包括: 為所述爬取請求設(shè)置第一請求標(biāo)簽; 將所述第一請求標(biāo)簽和所述爬取請求發(fā)送至所述云端分布式隊(duì)列;以及 保存所述爬取請求和所述第一請求標(biāo)簽至所述第一終端的數(shù)據(jù)表。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述第二終端按照所述爬取請求進(jìn)行網(wǎng)絡(luò)資源的爬取,并將爬取結(jié)果數(shù)據(jù)保存至數(shù)據(jù)庫的同時(shí)或之后,所述方法還包括: 將所述爬取請求的所述第一請求標(biāo)簽和所述爬取結(jié)果數(shù)據(jù)的存儲地址保存至所述云服務(wù)器的爬取完成隊(duì)列。
      4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述第一終端從所述數(shù)據(jù)庫讀取所述爬取結(jié)果數(shù)據(jù)包括: 從所述爬取完成隊(duì)列中獲取所述第一請求標(biāo)簽及其對應(yīng)的所述存儲地址; 從所述存儲地址對應(yīng)所述數(shù)據(jù)庫的存儲位置中讀取所述爬取結(jié)果數(shù)據(jù)。
      5.根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述第一終端從所述數(shù)據(jù)庫讀取所述爬取結(jié)果數(shù)據(jù)之后,所述方法還包括: 從所述數(shù)據(jù)表中讀取所述第一請求標(biāo)簽的所述爬取請求; 輸出所述第一請求標(biāo)簽的所述爬取請求和所述爬取結(jié)果數(shù)據(jù)。
      6.一種執(zhí)行爬取任務(wù)的裝置,其特征在于,包括: 發(fā)送模塊,用于第一終端將接收到的爬取請求發(fā)送至云服務(wù)器的云端分布式隊(duì)列; 第一讀取模塊,用于第二終端從所述云端分布式隊(duì)列中讀取所述爬取請求,其中,所述第二終端為云終端; 爬取模塊,用于所述第二終端按照所述爬取請求進(jìn)行網(wǎng)絡(luò)資源的爬取,并將爬取結(jié)果數(shù)據(jù)保存至數(shù)據(jù)庫; 第二讀取模塊,用于所述第一終端從所述數(shù)據(jù)庫讀取所述爬取結(jié)果數(shù)據(jù)。
      7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述發(fā)送模塊包括: 設(shè)置模塊,用于為所述爬取請求設(shè)置第一請求標(biāo)簽; 發(fā)送子模塊,用于將所述第一請求標(biāo)簽和所述爬取請求發(fā)送至所述云端分布式隊(duì)列;以及 第一保存模塊,用于保存所述爬取請求和所述第一請求標(biāo)簽至所述第一終端的數(shù)據(jù)表。
      8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 第二保存模塊,用于在所述第二終端按照所述爬取請求進(jìn)行網(wǎng)絡(luò)資源的爬取,并將爬取結(jié)果數(shù)據(jù)保存至數(shù)據(jù)庫的同時(shí)或之后,將所述爬取請求的所述第一請求標(biāo)簽和所述爬取結(jié)果數(shù)據(jù)的存儲地址保存至所述云服務(wù)器的爬取完成隊(duì)列。
      9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述第二讀取模塊包括: 獲取模塊,用于從所述爬取完成隊(duì)列中獲取所述第一請求標(biāo)簽及其對應(yīng)的所述存儲地址; 第二讀取子模塊,用于從所述存儲地址對應(yīng)所述數(shù)據(jù)庫的存儲位置中讀取所述爬取結(jié)果數(shù)據(jù)。
      10.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 第三讀取模塊,用于在所述第一終端從所述數(shù)據(jù)庫讀取所述爬取結(jié)果數(shù)據(jù)之后,從所述數(shù)據(jù)表中讀取所述第一請求標(biāo)簽的所述爬取請求; 輸出模塊,用于輸出所述第一請求標(biāo)簽的所述爬取請求和所述爬取結(jié)果數(shù)據(jù)。
      【文檔編號】G06F17/30GK104484405SQ201410779535
      【公開日】2015年4月1日 申請日期:2014年12月15日 優(yōu)先權(quán)日:2014年12月15日
      【發(fā)明者】何愷鐸 申請人:北京國雙科技有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1