国产精品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>

      數(shù)據(jù)爬取方法及裝置與流程

      文檔序號:11432236閱讀:364來源:國知局
      數(shù)據(jù)爬取方法及裝置與流程

      本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)爬取方法及裝置。



      背景技術(shù):

      爬蟲是人們?yōu)榱诵蜗竺枋鲇嬎銠C程序在網(wǎng)絡(luò)不斷通過定制的入口網(wǎng)址去提取網(wǎng)頁的鏈接,并根據(jù)這些鏈接再度抓取更深的其它未知的鏈接,以此下去,將這樣的程序抓取形為形容成類似爬蟲似的動作,稱之為爬蟲,爬蟲通過下載指定網(wǎng)站的所有鏈接來獲取開發(fā)者想要獲取的信息。

      爬蟲在爬取網(wǎng)頁時,首先需要具備一個指定的網(wǎng)址種子表,該表中記錄著每一個需要爬取的網(wǎng)站入口地址,以及一些爬取行為的配置信息,如爬取深度,模擬請求的元信息等。然后將網(wǎng)址種子表定時注入到爬蟲系統(tǒng)中,使得爬蟲系統(tǒng)將網(wǎng)址種子表中的爬取任務(wù)分配給各個爬蟲程序。其中,對于爬蟲爬取的網(wǎng)頁中不包含具體內(nèi)容的網(wǎng)頁為列表頁;包含具體內(nèi)容的網(wǎng)頁為文章頁。

      目前,爬蟲程序在爬取列表頁后,會向廣播服務(wù)器發(fā)送其爬取的列表頁信息,廣播服務(wù)器在接收到爬取的列表頁信息后,將爬取的列表頁信息轉(zhuǎn)發(fā)給其他爬蟲程序,以減少爬蟲程序重復(fù)爬取列表頁的情況。然而,由于廣播服務(wù)器發(fā)送信息的延遲,將會導(dǎo)致其他爬蟲程序?qū)σ雅廊∵^的列表頁進行重復(fù)爬取,因此現(xiàn)有的數(shù)據(jù)爬取方法的爬取重復(fù)率較高。



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

      鑒于上述問題,提出了本發(fā)明,以便提供一種克服上述問題或者至少部分地解決上述問題的數(shù)據(jù)爬取方法及裝置。

      為達到上述目的,本發(fā)明主要提供如下技術(shù)方案:

      一方面,本發(fā)明實施例提供了一種數(shù)據(jù)爬取方法,該方法包括:

      接收爬蟲程序發(fā)送的頁面爬取請求信息,所述頁面爬取請求信息中包括列表頁鏈接;

      判斷緩存隊列中是否存在所述列表頁鏈接,所述緩存隊列中存儲有爬蟲程序已經(jīng)爬取過的列表頁鏈接;

      若所述緩存隊列中不存在所述列表頁鏈接,則向所述爬蟲程序發(fā)送所述頁面爬取請求的確認信息,以使得所述爬蟲程序?qū)λ隽斜眄撴溄訉?yīng)的頁面進行爬取。

      另一方面,本發(fā)明實施例還提供一種數(shù)據(jù)爬取裝置,該裝置包括:

      接收單元,用于接收爬蟲程序發(fā)送的頁面爬取請求信息,所述頁面爬取請求信息中包括列表頁鏈接;

      判斷單元,用于判斷緩存隊列中是否存在所述列表頁鏈接,所述緩存隊列中存儲有爬蟲程序已經(jīng)爬取過的列表頁鏈接;

      發(fā)送單元,用于若所述緩存隊列中不存在所述列表頁鏈接,則向所述爬蟲程序發(fā)送所述頁面爬取請求的確認信息,以使得所述爬蟲程序?qū)λ隽斜眄撴溄訉?yīng)的頁面進行爬取。

      借由上述技術(shù)方案,本發(fā)明實施例提供的技術(shù)方案至少具有下列優(yōu)點:

      本發(fā)明實施例提供的一種數(shù)據(jù)爬取方法及裝置,首先接收爬蟲程序發(fā)送的頁面爬取請求信息,所述頁面爬取請求信息中包括列表頁鏈接,然后判斷緩存隊列中是否存在所述列表頁鏈接,所述緩存隊列中存儲有爬蟲程序已經(jīng)爬取過的列表頁鏈接,若所述緩存隊列中不存在所述列表頁鏈接,則向所述爬蟲程序發(fā)送所述頁面爬取請求的確認信息,以使得所述爬蟲程序?qū)λ隽斜眄撴溄訉?yīng)的頁面進行爬取。與目前通過爬蟲程序向廣播服務(wù)器發(fā)送其爬取的信息,然后由廣播服務(wù)器負責將爬取的消息轉(zhuǎn)發(fā)給其他的爬蟲程序,以實現(xiàn)均衡控制各個爬蟲程序爬取列表頁鏈接對應(yīng)的頁面相比,在本發(fā)明實施例中,當爬蟲程序接收到爬取任務(wù)后,首先向緩存隊列發(fā)送頁面爬取請求信息,所述頁面爬取請求信息中包括列表頁鏈接,然后根據(jù)緩存隊列中存儲的已爬取過的列表頁鏈接判斷是否對頁面爬取請求信息中的列表頁鏈接進行爬取,即以緩存隊列中存儲的鏈接判斷頁面爬取請求信息中的列表頁鏈接是否為已經(jīng)爬取過的鏈接,因此通過本發(fā)明實施例 可以減少數(shù)據(jù)爬取的重復(fù)率。

      附圖說明

      通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:

      圖1為本發(fā)明實施例提供的一種數(shù)據(jù)爬取方法流程圖;

      圖2為本發(fā)明實施例提供的另一種數(shù)據(jù)爬取方法流程圖;

      圖3為本發(fā)明實施例提供的一種數(shù)據(jù)爬取裝置的組成框圖;

      圖4為本發(fā)明實施例提供的另一種數(shù)據(jù)爬取裝置的組成框圖。

      具體實施方式

      下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。

      為使本發(fā)明技術(shù)方案的優(yōu)點更加清楚,下面結(jié)合附圖和實施例對本發(fā)明作詳細說明。

      本發(fā)明實施例提供了一種數(shù)據(jù)爬取方法,如圖1所示,所述方法包括:

      101、接收爬蟲程序發(fā)送的頁面爬取請求信息。

      其中,所述頁面爬取請求信息中包括列表頁鏈接。需要說明的是,列表頁鏈接為列表頁的url(uniformresourcelocator,統(tǒng)一資源定位符),所述列表頁為不包含內(nèi)容的網(wǎng)頁,而包含具體內(nèi)容的網(wǎng)頁為文章頁。

      102、判斷緩存隊列中是否存在所述列表頁鏈接。

      其中,所述緩存隊列中存儲有爬蟲程序已經(jīng)爬取過的列表頁鏈接。需要說明的是,緩存隊列中的列表頁鏈接是實時更新的,當所述頁面爬取請求信息中的列表頁鏈接不在緩存隊列中時,需要將頁面爬取請求信息中的 列表頁鏈接等信息對應(yīng)存儲到緩存隊列中。

      例如,緩存隊列中存儲的已經(jīng)爬取過的列表頁鏈接為:http://www.sina.com.cn/、http://www.ganji.com/、http://www.dangdang.com/,若頁面爬取請求信息中的列表頁鏈接為:http://www.sina.com.cn/,則經(jīng)過判斷得出緩存隊列中存在對應(yīng)的列表頁鏈接,說明當前的任務(wù)鏈接是已經(jīng)爬取過的,爬蟲程序無需再對列表頁鏈接對應(yīng)的頁面進行爬?。蝗繇撁媾廊≌埱笮畔⒅械牧斜眄撴溄訛椋篽ttps://ju.taobao.com/,則經(jīng)過判斷得出緩存隊列中不存在對應(yīng)的列表頁鏈接,則需要爬蟲程序?qū)α斜眄撴溄訉?yīng)的頁面進行爬取,在爬蟲程序爬取列表頁鏈接對應(yīng)的頁面之后,還需要將頁面爬取請求信息中的列表頁鏈接等信息對應(yīng)保存到緩存隊列當中。

      103、若所述緩存隊列中不存在所述列表頁鏈接,則向所述爬蟲程序發(fā)送所述頁面爬取請求的確認信息。

      進一步地,以使得所述爬蟲程序?qū)λ隽斜眄撴溄訉?yīng)的頁面進行爬取。對于本發(fā)明實施例,當爬蟲程序接收到爬取任務(wù)后,首先向緩存隊列發(fā)送頁面爬取請求信息,所述頁面爬取請求信息中包括列表頁鏈接,然后根據(jù)緩存隊列中存儲的已爬取過的列表頁鏈接判斷是否對頁面爬取請求信息中的列表頁鏈接進行爬取,若緩存隊列中存在對應(yīng)的列表頁鏈接,說明頁面爬取請求信息中的列表頁鏈接是已經(jīng)爬取過的,爬蟲程序無需再對該條列表頁鏈接對應(yīng)的頁面進行爬取,因此通過本發(fā)明實施例可以減少數(shù)據(jù)爬取的重復(fù)率。

      本發(fā)明實施例提供了另一種數(shù)據(jù)爬取方法,如圖2所示,所述方法包括:

      201、接收爬蟲程序發(fā)送的頁面爬取請求信息。

      其中,所述頁面爬取請求信息中包括列表頁鏈接。需要說明的是,列表頁鏈接為列表頁的url(uniformresourcelocator,統(tǒng)一資源定位符),所述列表頁為不包含內(nèi)容的網(wǎng)頁,而包含具體內(nèi)容的網(wǎng)頁為文章頁。

      對于本發(fā)明實施例,所述接收爬蟲程序發(fā)送的頁面爬取請求信息之前,所述方法還包括:接收所述爬蟲程序發(fā)送的事物處理函數(shù);根據(jù)所述事物處理函數(shù)初始化所述緩存隊列,并計算所述事物處理函數(shù)對應(yīng)的唯一標識 碼;將所述唯一標識碼發(fā)送給所述爬蟲程序,以使得所述爬蟲程序通過所述唯一標識碼向所述緩存隊列發(fā)送頁面爬取請求信息。其中,所述事物處理函數(shù)用于指示緩存隊列如何對接收到的頁面爬取請求信息進行處理,其中,事物處理函數(shù)具體可以根據(jù)緩存隊列中處理數(shù)據(jù)的實際需求進行配置,也可以根據(jù)用戶的需求進行配置,本發(fā)明實施例不做具體限定。在本發(fā)明實施例中,在緩存隊列收到事物處理函數(shù)后,會將事物處理函數(shù)加載進程序中并返回給爬蟲程序一串唯一標識碼。其中,唯一標識碼具體可以為通過md5(message-digestalgorithm5,信息摘要算法5)算法得到的標識碼,也可有sha1(securehashalgorithm,安全哈希算法)算法得到的標識碼,本發(fā)明實施例不做具體限定。

      在本發(fā)明實施例中,由于唯一標識碼是緩存隊列是通過對事物處理函數(shù)進行哈希運算取得的結(jié)果,也就是說同一事物處理函數(shù)傳入緩存隊列,得到的標識碼是一致的,所以無論爬蟲程序發(fā)送相同的事物處理函數(shù)到緩存隊列多少次,得到的返回標識碼都是一樣的。因此根據(jù)事物處理函數(shù)初始化緩存隊列之后,每次調(diào)用只需要以標識碼來代替事物處理函數(shù)即可,從而避免了事物處理函數(shù)過長而造成的網(wǎng)絡(luò)開銷。

      例如,若緩存隊列中定義了事務(wù)處理函數(shù)需要兩個參數(shù):“arg1”、“arg2”。那么調(diào)用緩存隊列時就需要攜帶以下三個參數(shù):“code”、“arg1”、“arg2”。其中,“code”為緩存隊列通過事務(wù)處理函數(shù)得到的唯一標識碼,“arg1”、“arg2”為頁面爬取請求信息中的參數(shù),所述參數(shù)具體可以為列表頁鏈接、緩存時間、爬取間隔時間、剩余爬取層級等,本發(fā)明實施例不做具體限定。需要說明的是,本發(fā)明實施例不限制參數(shù)的格式以及傳輸方式。

      對于本發(fā)明實施例,所述頁面爬取請求信息中還包括與所述列表頁鏈接對應(yīng)的爬取間隔時間、剩余爬取層級。需要說明的是,爬蟲程序關(guān)于爬取層級控制的原理:在爬蟲任務(wù)注入爬蟲系統(tǒng)時,會由管理員對爬蟲任務(wù)可爬取的層級做出限制。比如對爬取sina.com的任務(wù)設(shè)置最多爬取三級。那么該任務(wù)在爬取sina.com主頁后,會將主頁所有鏈接抽取出來進行下一輪爬取。這些抽取出來的鏈接在下次爬取時,剩余層級就會由最初的三級減少為兩級。當層級為0時爬蟲任務(wù)就會結(jié)束。

      202、判斷緩存隊列中是否存在所述列表頁鏈接。

      其中,所述緩存隊列中存儲有爬蟲程序已經(jīng)爬取過的列表頁鏈接。需要說明的是,緩存隊列中的列表頁鏈接是實時更新的,當所述頁面爬取請求信息中的列表頁鏈接不在緩存隊列中時,需要將頁面爬取請求信息中的列表頁鏈接等信息對應(yīng)存儲到緩存隊列中。

      203a、若所述緩存隊列中不存在所述列表頁鏈接,則向所述爬蟲程序發(fā)送所述頁面爬取請求的確認信息。

      進一步地,以使得所述爬蟲程序?qū)λ隽斜眄撴溄訉?yīng)的頁面進行爬取。對于本發(fā)明實施例,當爬蟲程序接收到爬取任務(wù)后,首先向緩存隊列發(fā)送頁面爬取請求信息,所述頁面爬取請求信息中包括列表頁鏈接,然后根據(jù)緩存隊列中存儲的已爬取過的列表頁鏈接判斷是否對頁面爬取請求信息中的列表頁鏈接進行爬取,若緩存隊列中存在對應(yīng)的列表頁鏈接,說明頁面爬取請求信息中的列表頁鏈接是已經(jīng)爬取過的,爬蟲程序無需再對該條列表頁鏈接進行爬取,因此通過本發(fā)明實施例可以減少數(shù)據(jù)爬取的重復(fù)率。

      對于本發(fā)明實施例,在所述緩存隊列中不存在所述列表頁鏈接之后,所述方法還包括:將所述頁面爬取請求信息中的列表頁鏈接,及與所述列表頁鏈接對應(yīng)的緩存時間、爬取間隔時間、剩余爬取層級對應(yīng)存儲到所述緩存隊列中。

      在本發(fā)明實施例中,所述方法還包括:按照預(yù)置時間間隔將所述緩存隊列中緩存時間與爬取間隔時間的和大于當前時間對應(yīng)的緩存數(shù)據(jù)刪除。其中,所述預(yù)置時間間隔可以根據(jù)實際需要進行配置,如10分鐘、20分鐘、30分鐘等,本發(fā)明實施例不做具體限定。對于本發(fā)明實施例,緩存隊列定時的對所有的緩存信息進行清理,起到緩存生存時間控制的功能。本發(fā)明通過循環(huán)遍歷緩存隊列中的緩存數(shù)據(jù),查找緩存時間與爬取間隔時間的和大于當前時間的緩存數(shù)據(jù)。如果緩存數(shù)據(jù)中的緩存時間加上爬取間隔時間大于當前時間,那么表示該條緩存已失效,因此需要將其刪除,從而通過本發(fā)明實施例可以減少緩存隊列中緩存數(shù)據(jù)的數(shù)量,進而提高了查找緩存隊列中列表頁鏈接的時間,提高了數(shù)據(jù)爬取的效率。需要說明的是,當重 復(fù)的列表頁鏈接再次發(fā)送到緩存隊列時,由于該條列表頁鏈接對應(yīng)的緩存數(shù)據(jù)已經(jīng)不存在,因此直接創(chuàng)建新的緩存數(shù)據(jù)到緩存隊列中即可。

      203b、若所述緩存隊列中存在所述列表頁鏈接,則判斷緩存隊列中與所述列表頁鏈接對應(yīng)鏈接的緩存時間及爬取間隔時間的和,是否早于當前時間。

      其中,步驟203b為步驟203a的并列步驟,若所述緩存隊列中存在所述列表頁鏈接,則判斷緩存隊列中與所述列表頁鏈接對應(yīng)鏈接的緩存時間及爬取間隔時間的和,是否早于當前時間。需要說明的是,由于網(wǎng)站管理員會對網(wǎng)頁內(nèi)容進行定期更新,因此每個網(wǎng)頁會有一個有效時間,本發(fā)明中的爬取間隔時間即為網(wǎng)頁的有效時間,若當前時間晚于對應(yīng)鏈接的緩存時間及爬取間隔時間的和,則說明緩存隊列中存儲的對應(yīng)連接的內(nèi)容已經(jīng)過期,因此需要對其進行重新爬取,因此通過判斷緩存隊列中與所述列表頁鏈接對應(yīng)鏈接的緩存時間及爬取間隔時間的和是否早于當前時間,可以提高數(shù)據(jù)爬取的精確度。

      203b1、若所述對應(yīng)鏈接的緩存時間及爬取間隔時間的和早于當前時間,則向所述爬蟲程序發(fā)送所述頁面爬取請求的確認信息。

      進一步地,以使得所述爬蟲程序?qū)λ隽斜眄撴溄訉?yīng)的頁面進行爬取。

      例如,當前時間為2016-01-20上午8:10,緩存隊列中對應(yīng)列表頁鏈接的緩存時間為2016-01-10上午8:10,爬取間隔時間為3天,即緩存隊列中對應(yīng)列表頁鏈接的有效時間為2016-01-13上午8:10。因此經(jīng)過判斷緩存隊列中對應(yīng)列表頁鏈接的緩存時間及爬取間隔時間的和早于當前時間,即2016-01-13上午8:10早于2016-01-20上午8:10,由此說明緩存隊列中與列表頁鏈接對應(yīng)鏈接的內(nèi)容已經(jīng)過期,需要通過爬蟲程序?qū)α斜眄撴溄舆M行重新爬取。因此在緩存隊列中對應(yīng)列表頁鏈接的緩存時間及爬取間隔時間的和早于當前時間的情況下,需要向所述爬蟲程序發(fā)送所述頁面爬取請求的確認信息,以使得所述爬蟲程序?qū)λ隽斜眄撴溄訉?yīng)的頁面進行爬取,以滿足數(shù)據(jù)爬取的準確性。

      在本發(fā)明實施例中,若所述對應(yīng)鏈接的緩存時間及爬取間隔時間的和 早于當前時間,則向所述爬蟲程序發(fā)送所述頁面爬取請求的確認信息之后,所述方法還包括:通過所述當前時間,及所述列表頁鏈接對應(yīng)的爬取間隔時間、剩余爬取層級更新所述緩存隊列中對應(yīng)列表頁鏈接的緩存時間、爬取間隔時間、剩余爬取層級。需要說明的是,由于列表頁鏈接有可能與爬蟲隊列中對應(yīng)鏈接的爬取時間間隔、剩余爬取層級不一致,因此在爬蟲程序?qū)α斜眄撴溄优廊『?,需要將緩存隊列中的列表頁鏈接對?yīng)的緩存時間、爬取時間間隔、剩余爬取層級等信息進行更新,以實時更新緩存隊列中爬取數(shù)據(jù)的狀態(tài)。

      203b2、若所述對應(yīng)鏈接的緩存時間及爬取間隔時間的和晚于當前時間,則判斷所述列表頁鏈接的剩余爬取層級是否大于緩存隊列中對應(yīng)鏈接的剩余爬取層級。

      其中,步驟203b2為步驟203b1的并列步驟,若所述對應(yīng)鏈接的緩存時間及爬取間隔時間的和晚于當前時間,則判斷所述列表頁鏈接的剩余爬取層級是否大于緩存隊列中對應(yīng)鏈接的剩余爬取層級。

      對于本發(fā)明實施例,若所述對應(yīng)鏈接的緩存時間及爬取間隔時間的和晚于當前時間,則還需要判斷所述列表頁鏈接的剩余爬取層級是否大于緩存隊列中對應(yīng)鏈接的剩余爬取層級。如果列表頁鏈接的剩余爬取層級更深,則允許爬蟲程序?qū)撁媾廊≌埱笮畔⒅械牧斜眄撴溄訉?yīng)的頁面進行爬取,并爬蟲程序爬取之后將列表頁鏈接的剩余爬取層級以及緩存時間記錄在緩存隊列中。例如:一個爬蟲任務(wù)注入了列表頁鏈接sina.com,爬取層級為3,爬取時間間隔為10分鐘。另一個爬蟲任務(wù)在相隔兩分鐘后注入了列表頁鏈接sina.com,爬取層級為4,列表頁爬取時間間隔為10分鐘。由于后一個爬蟲任務(wù)在前一個任務(wù)的列表頁爬取間隔內(nèi),說明列表頁鏈接對應(yīng)的網(wǎng)頁內(nèi)容未過期,但是后一個列表頁鏈接的爬取深度大于前一個列表頁鏈接。如果后一個任務(wù)僅以爬取時間間隔作為是否需要進行爬取的考量,那么sina.com的第四層就不會被爬取到。因此通過本發(fā)明實施例,可以提高了數(shù)據(jù)爬取的深度,即提高爬蟲程序爬取的數(shù)據(jù)量。

      203b2a、若大于緩存隊列中對應(yīng)鏈接的剩余爬取層級,則向所述爬蟲程序發(fā)送所述頁面爬取請求的確認信息。

      進一步地,以使得所述爬蟲程序?qū)λ隽斜眄撴溄訉?yīng)的頁面進行爬取。

      在本發(fā)明實施例中,若列表頁鏈接的剩余爬取層級大于緩存隊列中對應(yīng)鏈接的剩余爬取層級,則向所述爬蟲程序發(fā)送所述頁面爬取請求的確認信息之后,所述方法還包括:通過所述當前時間,及所述列表頁鏈接對應(yīng)的爬取間隔時間、剩余爬取層級更新所述緩存隊列中列表頁鏈接對應(yīng)的緩存時間、爬取間隔時間、剩余爬取層級。需要說明的是,由于列表頁鏈接有可能與爬蟲隊列中對應(yīng)鏈接的爬取時間間隔、剩余爬取層級不一致,因此在爬蟲程序?qū)α斜眄撴溄优廊『?,需要將緩存隊列中的列表頁鏈接對?yīng)的緩存時間、爬取時間間隔、剩余爬取層級等信息進行更新,以實時更新緩存隊列中爬取數(shù)據(jù)的狀態(tài),從而提高緩存隊列根據(jù)緩存數(shù)據(jù)判斷是否對頁面爬取請求信息中的列表頁鏈接進行爬取的準確性,進而提高了爬蟲程序爬取數(shù)據(jù)的數(shù)量及準確度。

      203b2b、若小于等于緩存隊列中對應(yīng)鏈接的剩余爬取層級,則向所述爬蟲程序發(fā)送所述頁面爬取請求的取消信息。

      進一步地,以使得所述爬蟲程序取消對所述列表頁鏈接的爬取任務(wù)。其中,步驟203b2b為步驟203b2a的并列步驟,若列表頁鏈接的剩余爬取層級小于等于緩存隊列中對應(yīng)鏈接的剩余爬取層級,則向所述爬蟲程序發(fā)送所述頁面爬取請求的取消信息,以使得所述爬蟲程序取消對所述列表頁鏈接的爬取任務(wù)。

      本發(fā)明實施例提供的一種數(shù)據(jù)爬取方法,首先接收爬蟲程序發(fā)送的頁面爬取請求信息,所述頁面爬取請求信息中包括列表頁鏈接,然后判斷緩存隊列中是否存在所述列表頁鏈接,所述緩存隊列中存儲有爬蟲程序已經(jīng)爬取過的列表頁鏈接,若所述緩存隊列中不存在所述列表頁鏈接,則向所述爬蟲程序發(fā)送所述頁面爬取請求的確認信息,以使得所述爬蟲程序?qū)λ隽斜眄撴溄訉?yīng)的頁面進行爬取。與目前通過爬蟲程序向廣播服務(wù)器發(fā)送其爬取的信息,然后由廣播服務(wù)器負責將爬取的消息轉(zhuǎn)發(fā)給其他的爬蟲程序,以實現(xiàn)均衡控制各個爬蟲程序爬取列表頁鏈接對應(yīng)的頁面相比,在本發(fā)明實施例中,當爬蟲程序接收到爬取任務(wù)后,首先向緩存隊列發(fā)送頁 面爬取請求信息,所述頁面爬取請求信息中包括列表頁鏈接,然后根據(jù)緩存隊列中存儲的已爬取過的列表頁鏈接判斷是否對頁面爬取請求信息中的列表頁鏈接進行爬取,即以緩存隊列中存儲的鏈接判斷頁面爬取請求信息中的列表頁鏈接是否為已經(jīng)爬取過的鏈接,因此通過本發(fā)明實施例可以減少數(shù)據(jù)爬取的重復(fù)率。

      進一步地,本發(fā)明實施例提供一種數(shù)據(jù)爬取裝置,如圖3所示,所述裝置包括:接收單元31、判斷單元32、發(fā)送單元33。

      接收單元31,用于接收爬蟲程序發(fā)送的頁面爬取請求信息,所述頁面爬取請求信息中包括列表頁鏈接;

      判斷單元32,用于判斷緩存隊列中是否存在所述列表頁鏈接,所述緩存隊列中存儲有爬蟲程序已經(jīng)爬取過的列表頁鏈接;

      發(fā)送單元33,用于若所述緩存隊列中不存在所述列表頁鏈接,則向所述爬蟲程序發(fā)送所述頁面爬取請求的確認信息,以使得所述爬蟲程序?qū)λ隽斜眄撴溄訉?yīng)的頁面進行爬取。

      需要說明的是,本發(fā)明實施例提供的一種數(shù)據(jù)爬取裝置所涉及各功能單元的其他相應(yīng)描述,可以參考圖1所示方法的對應(yīng)描述,在此不再贅述,但應(yīng)當明確,本實施例中的裝置能夠?qū)?yīng)實現(xiàn)前述方法實施例中的全部內(nèi)容。

      進一步地,本發(fā)明實施例提供另一種數(shù)據(jù)爬取裝置,如圖4所示,所述裝置包括:接收單元41、判斷單元42、發(fā)送單元43。

      接收單元41,用于接收爬蟲程序發(fā)送的頁面爬取請求信息,所述頁面爬取請求信息中包括列表頁鏈接;

      判斷單元42,用于判斷緩存隊列中是否存在所述列表頁鏈接,所述緩存隊列中存儲有爬蟲程序已經(jīng)爬取過的列表頁鏈接;

      發(fā)送單元43,用于若所述緩存隊列中不存在所述列表頁鏈接,則向所述爬蟲程序發(fā)送所述頁面爬取請求的確認信息,以使得所述爬蟲程序?qū)λ隽斜眄撴溄訉?yīng)的頁面進行爬取。

      對于本發(fā)明實施例,所述頁面爬取請求信息中還包括與所述列表頁鏈接對應(yīng)的爬取間隔時間、剩余爬取層級,所述裝置還包括:

      存儲單元44,用于將所述頁面爬取請求信息中的列表頁鏈接,及與所述列表頁鏈接對應(yīng)的緩存時間、爬取間隔時間、剩余爬取層級對應(yīng)存儲到所述緩存隊列中。

      所述判斷單元42,還用于若所述緩存隊列中存在所述列表頁鏈接,則判斷緩存隊列中與所述列表頁鏈接對應(yīng)鏈接的緩存時間及爬取間隔時間的和,是否早于當前時間;

      所述發(fā)送單元43,用于若所述對應(yīng)鏈接的緩存時間及爬取間隔時間的和早于當前時間,則向所述爬蟲程序發(fā)送所述頁面爬取請求的確認信息,以使得所述爬蟲程序?qū)λ隽斜眄撴溄訉?yīng)的頁面進行爬取。

      所述判斷單元42,還用于若所述對應(yīng)鏈接的緩存時間及爬取間隔時間的和晚于當前時間,則判斷所述列表頁鏈接的剩余爬取層級是否大于緩存隊列中對應(yīng)鏈接的剩余爬取層級;

      所述發(fā)送單元43,用于若大于緩存隊列中對應(yīng)鏈接的剩余爬取層級,則向所述爬蟲程序發(fā)送所述頁面爬取請求的確認信息,以使得所述爬蟲程序?qū)λ隽斜眄撴溄訉?yīng)的頁面進行爬??;

      所述發(fā)送單元43,還用于若小于等于緩存隊列中對應(yīng)鏈接的剩余爬取層級,則向所述爬蟲程序發(fā)送所述頁面爬取請求的取消信息,以使得所述爬蟲程序取消對所述列表頁鏈接的爬取任務(wù)。

      對于本發(fā)明實施例,所述裝置還包括:

      更新單元45,用于通過所述當前時間,及所述列表頁鏈接對應(yīng)的爬取間隔時間、剩余爬取層級更新所述緩存隊列中列表頁鏈接對應(yīng)的緩存時間、爬取間隔時間、剩余爬取層級。

      刪除單元46,用于按照預(yù)置時間間隔將所述緩存隊列中緩存時間與爬取間隔時間的和大于當前時間對應(yīng)的緩存數(shù)據(jù)刪除。

      對于本發(fā)明實施例,所述裝置還包括:初始化單元47;

      所述接收單元41,還用于接收所述爬蟲程序發(fā)送的事物處理函數(shù);

      所述初始化單元47,用于根據(jù)所述事物處理函數(shù)初始化所述緩存隊列,并計算所述事物處理函數(shù)對應(yīng)的唯一標識碼;

      所述發(fā)送單元43,還用于將所述唯一標識碼發(fā)送給所述爬蟲程序,以 使得所述爬蟲程序通過所述唯一標識碼向所述緩存隊列發(fā)送頁面爬取請求信息。

      需要說明的是,本發(fā)明實施例提供的一種數(shù)據(jù)爬取裝置所涉及各功能單元的其他相應(yīng)描述,可以參考圖2所示方法的對應(yīng)描述,在此不再贅述,但應(yīng)當明確,本實施例中的裝置能夠?qū)?yīng)實現(xiàn)前述方法實施例中的全部內(nèi)容。

      本發(fā)明實施例提供的一種數(shù)據(jù)爬取裝置,首先接收爬蟲程序發(fā)送的頁面爬取請求信息,所述頁面爬取請求信息中包括列表頁鏈接,然后判斷緩存隊列中是否存在所述列表頁鏈接,所述緩存隊列中存儲有爬蟲程序已經(jīng)爬取過的列表頁鏈接,若所述緩存隊列中不存在所述列表頁鏈接,則向所述爬蟲程序發(fā)送所述頁面爬取請求的確認信息,以使得所述爬蟲程序?qū)λ隽斜眄撴溄訉?yīng)的頁面進行爬取。與目前通過爬蟲程序向廣播服務(wù)器發(fā)送其爬取的信息,然后由廣播服務(wù)器負責將爬取的消息轉(zhuǎn)發(fā)給其他的爬蟲程序,以實現(xiàn)均衡控制各個爬蟲程序爬取列表頁鏈接對應(yīng)的頁面相比,在本發(fā)明實施例中,當爬蟲程序接收到爬取任務(wù)后,首先向緩存隊列發(fā)送頁面爬取請求信息,所述頁面爬取請求信息中包括列表頁鏈接,然后根據(jù)緩存隊列中存儲的已爬取過的列表頁鏈接判斷是否對頁面爬取請求信息中的列表頁鏈接進行爬取,即以緩存隊列中存儲的鏈接判斷頁面爬取請求信息中的列表頁鏈接是否為已經(jīng)爬取過的鏈接,因此通過本發(fā)明實施例可以減少數(shù)據(jù)爬取的重復(fù)率。

      所述數(shù)據(jù)爬取裝置包括處理器和存儲器,上述接收單元、判斷單元、發(fā)送單元、存儲單元、更新單元、刪除單元和初始化單元等均作為程序單元存儲在存儲器中,由處理器執(zhí)行存儲在存儲器中的上述程序單元來實現(xiàn)相應(yīng)的功能。

      處理器中包含內(nèi)核,由內(nèi)核去存儲器中調(diào)取相應(yīng)的程序單元。內(nèi)核可以設(shè)置一個或以上,通過調(diào)整內(nèi)核參數(shù)來減少數(shù)據(jù)爬取的重復(fù)率。

      存儲器可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram),存儲器包括至少一個存儲芯片。

      本申請還提供了一種計算機程序產(chǎn)品,當在數(shù)據(jù)處理設(shè)備上執(zhí)行時,適于執(zhí)行初始化有如下方法步驟的程序代碼:接收爬蟲程序發(fā)送的頁面爬取請求信息,所述頁面爬取請求信息中包括列表頁鏈接;判斷緩存隊列中是否存在所述列表頁鏈接,所述緩存隊列中存儲有爬蟲程序已經(jīng)爬取過的列表頁鏈接;若所述緩存隊列中不存在所述列表頁鏈接,則向所述爬蟲程序發(fā)送所述頁面爬取請求的確認信息,以使得所述爬蟲程序?qū)λ隽斜眄撴溄訉?yīng)的頁面進行爬取。

      本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。

      本申請是參照根據(jù)本申請實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

      這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

      這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的 功能的步驟。

      在一個典型的配置中,計算設(shè)備包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。

      存儲器可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。存儲器是計算機可讀介質(zhì)的示例。

      計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。

      以上僅為本申請的實施例而已,并不用于限制本申請。對于本領(lǐng)域技術(shù)人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應(yīng)包含在本申請的權(quán)利要求范圍之內(nèi)。

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