本發(fā)明涉及計算機應用技術領域,具體地說是一種實用性強、利用云端進行并發(fā)采集的爬蟲實現(xiàn)方法。
背景技術:
隨者互聯(lián)網(wǎng)的飛速發(fā)展,大數(shù)據(jù)這個概念越來越受到人們的關注。企業(yè)可以通過網(wǎng)絡爬蟲采集互聯(lián)網(wǎng)中的數(shù)據(jù),數(shù)據(jù)本身具有一定的商業(yè)價值,并且可以對海量數(shù)據(jù)進行深加工找出更有價值的數(shù)據(jù)分析結果,并通過分析結果提供決策支持,驅動企業(yè)的加速發(fā)展。數(shù)據(jù)的價值越來越受到人們的關注。
但互聯(lián)網(wǎng)上的數(shù)據(jù),以指數(shù)級逐年增長,同時互聯(lián)網(wǎng)也會針對爬蟲做出限制,爬蟲節(jié)點較少時爬取能力有限,所以大量使用云服務器進行分布式爬取成為流行。基于此,現(xiàn)提供一種基于利用云端進行并發(fā)采集的爬蟲實現(xiàn)方法,使服務器上的爬蟲能夠將網(wǎng)頁下載任務分發(fā)至云節(jié)點實現(xiàn)大規(guī)模分布式并發(fā)采集。
技術實現(xiàn)要素:
本發(fā)明的技術任務是針對以上不足之處,提供一種實用性強、利用云端進行并發(fā)采集的爬蟲實現(xiàn)方法。
本發(fā)明的一種利用云端進行并發(fā)采集的爬蟲實現(xiàn)方法,包括爬蟲端和若干云節(jié)點服務端,其實現(xiàn)過程為:
1)爬蟲端通過云節(jié)點服務端進行采集,爬蟲端將采集任務批次發(fā)送到云節(jié)點服務端,通過校驗、請求處理實現(xiàn)云節(jié)點服務端任務分發(fā);
2)云節(jié)點服務端進行狀態(tài)檢測,實時檢測云節(jié)點服務端的可用狀態(tài)以及任務隊列和下載隊列排隊情況,并根據(jù)云節(jié)點服務端情況選擇是否發(fā)送任務或者是否立刻收取網(wǎng)頁;
3)爬蟲端將本地數(shù)據(jù)庫的配置同步至云節(jié)點服務端;
4)云節(jié)點服務端網(wǎng)頁收取,爬蟲端向云節(jié)點服務端請求已經(jīng)下載的頁面,云節(jié)點服務端批量返回已經(jīng)下載的頁面;
5)實現(xiàn)下載任務的異常容錯處理和事物控制,通過本地緩存和數(shù)據(jù)實現(xiàn)異常容錯處理,保證網(wǎng)頁不丟失。
所述步驟1)的詳細過程為:
爬蟲端從下載任務的生產(chǎn)者中接收下載任務,該生產(chǎn)者是數(shù)據(jù)庫中的待下載數(shù)據(jù)或者消息隊列中的待下載數(shù)據(jù);
爬蟲端定時同步現(xiàn)有任務配置至云節(jié)點服務端,云節(jié)點服務端根據(jù)規(guī)則進行間隔下載;
爬蟲端檢查所有云節(jié)點服務端狀態(tài),選擇可用同時任務排隊數(shù)小于排隊閾值的云節(jié)點服務端;
爬蟲端將任務均勻的發(fā)送至云節(jié)點服務端,并且記錄發(fā)送信息備份到本地緩存以及數(shù)據(jù)庫中。
爬蟲端定時檢查云節(jié)點服務端的狀態(tài)是指通過tcp或http方式進行數(shù)據(jù)查看,查看云端的可用狀態(tài)、已有任務配置數(shù)、待下載任務排隊數(shù)、已下載網(wǎng)頁數(shù),并將狀態(tài)等數(shù)值緩存到本地。
所述步驟3)中配置同步是指爬蟲端從數(shù)據(jù)庫加載任務配置,并推送至云節(jié)點服務端,實時檢查云節(jié)點服務端配置和爬蟲端是否相同,如果不同則全部同步一次。
所述步驟2)及步驟4)中的網(wǎng)頁收取是指爬蟲端定期檢查云端已下載網(wǎng)頁數(shù),當已下載網(wǎng)頁數(shù)超過指定閾值時立即收取該云端的網(wǎng)頁。
所述步驟4)的詳細過程為:
爬蟲端定時檢查云節(jié)點服務端已下載網(wǎng)頁數(shù),當已下載網(wǎng)頁數(shù)超過已下載閾值時收取云節(jié)點已下載網(wǎng)頁,并清空云節(jié)點上存儲的網(wǎng)頁;
該爬蟲端定時從云節(jié)點服務端獲取已下載網(wǎng)頁隊列中的網(wǎng)頁數(shù)據(jù),收取到網(wǎng)頁后根據(jù)關鍵字段刪除本地緩存和數(shù)據(jù)庫中記錄的備份信息,這里的關鍵字段包括任務ID、URL。
所述步驟5)中容錯處理是指通過爬蟲端緩存和數(shù)據(jù)庫記錄進行雙重保障,對云端和爬蟲端同時進行容錯,即通過本地緩存和數(shù)據(jù)庫記錄任務發(fā)送歷史,將收取的網(wǎng)頁和發(fā)送歷史進行對比,一定時間內未下載的網(wǎng)頁視為下載失敗,進行重發(fā)處理。
所述步驟5)的詳細過程為:
爬蟲端每次啟動時均查詢數(shù)據(jù)庫中的任務備份信息,恢復未被下載的任務;且該爬蟲端定時檢查本地緩存,當有任務加入緩存的時間超過下載時長閾值時,視為下載失敗,重啟該下載任務。
本發(fā)明的一種利用云端進行并發(fā)采集的爬蟲實現(xiàn)方法,具有以下優(yōu)點:
本發(fā)明提供的一種利用云端進行并發(fā)采集的爬蟲實現(xiàn)方法,使用分布式云端并發(fā)采集,相當于增加了采集資源,大大提高了采集的效率;通過爬蟲端進行數(shù)據(jù)中轉,也解決了云端直接訪問本地數(shù)據(jù)帶來的安全隱患;通過爬蟲端批次發(fā)送下載任務、批次收取下載網(wǎng)頁,提高了傳輸效率,將爬蟲和云端交互帶來的影響降到最低;通過本地和數(shù)據(jù)庫記錄下載信息,實現(xiàn)了下載內容的異常容錯處理和事物控制,保證下載任務被執(zhí)行,減少傳統(tǒng)爬蟲中容易出現(xiàn)的網(wǎng)頁丟失情況,實用性強,適用范圍廣泛,易于推廣。
附圖說明
附圖1為URL下載任務發(fā)送流程圖。
附圖2為云端定時檢測流程圖。
附圖3為回收網(wǎng)頁流程圖。
具體實施方式
下面結合附圖及具體實施例對本發(fā)明作進一步說明。
如附圖1、圖2、圖3所示,本發(fā)明的一種利用云端進行并發(fā)采集的爬蟲實現(xiàn)方法,通過爬蟲端對云節(jié)點的采集服務進行采集,并對其進行監(jiān)控、管理。
包括爬蟲端和云節(jié)點服務端兩個主要模塊,其中云節(jié)點服務端包括若干個,爬蟲端能定期檢驗云節(jié)點服務端狀態(tài),查看URL存放容器剩余容量,批量發(fā)送待采集網(wǎng)頁,批量回收已采集網(wǎng)頁,批量發(fā)送網(wǎng)頁采集規(guī)則等功能。云節(jié)點服務端接收要下載的任務,并對任務并發(fā)下載,并能反饋當前的任務量能信息,為了方便表述,下面將云節(jié)點服務端統(tǒng)稱為云端。
一種基于分布式云端實現(xiàn)并發(fā)采集的爬蟲實現(xiàn)策略,爬蟲端能夠定時檢查云端的狀態(tài),并選擇云端進行任務發(fā)送;根據(jù)云端狀態(tài)進行實時配置同步;根據(jù)云端已下載網(wǎng)頁數(shù),擇機進行網(wǎng)頁收??;通過本地緩存和數(shù)據(jù)實現(xiàn)異常容錯處理,保證網(wǎng)頁不丟失。
所述的云端狀態(tài)檢查是指通過tcp或http等多種方式中的一種進行數(shù)據(jù)查看,查看云端的可用狀態(tài)、已有任務配置數(shù)、待下載任務排隊數(shù)、已下載網(wǎng)頁數(shù),并將狀態(tài)等數(shù)值緩存到本地。
所述的配置同步是指爬蟲端從數(shù)據(jù)庫加載任務配置,并推送至云端,實時檢查云端配置和爬蟲端是否相同,如果不同則全部同步一次。
所述的網(wǎng)頁收取是指爬蟲端定期檢查云端已下載網(wǎng)頁數(shù),當已下載網(wǎng)頁數(shù)超過指定閾值時立即收取該云端的網(wǎng)頁。
所述的容錯處理是指通過爬蟲端緩存和數(shù)據(jù)庫記錄進行雙重保障,能對云端和爬蟲端同時進行容錯。
更加具體的,本發(fā)明的實現(xiàn)過程為:
1)爬蟲端通過云端進行采集:將采集任務批次發(fā)送到云端,通過一系列的校驗、請求等處理實現(xiàn)云端任務分發(fā);
爬蟲端從下載任務的生產(chǎn)者中接收下載任務,該生產(chǎn)者可以是數(shù)據(jù)庫中的待下載數(shù)據(jù)、或者消息隊列中的待下載數(shù)據(jù)。
爬蟲端定時同步現(xiàn)有任務配置至云節(jié)點,云節(jié)點根據(jù)規(guī)則進行間隔下載。
2)云端狀態(tài)檢測機制:能夠實時檢測云端的可用狀態(tài)以及任務隊列和下載隊列排隊情況,并根據(jù)云端情況選擇是否發(fā)送任務或者是否立刻收取網(wǎng)頁;
爬蟲端檢查所有云節(jié)點狀態(tài),選擇可用同時任務排隊數(shù)小于排隊閾值的云節(jié)點。爬蟲端將任務均勻的發(fā)送至云節(jié)點,并且記錄發(fā)送信息備份到本地緩存以及數(shù)據(jù)庫中。
3)爬蟲同步配置至云端:將本地數(shù)據(jù)庫的配置同步至云端,解決了云端訪問數(shù)據(jù)庫的安全性問題;
爬蟲端定時檢查云節(jié)點已下載網(wǎng)頁數(shù),當已下載網(wǎng)頁數(shù)超過已下載閾值時收取云節(jié)點已下載網(wǎng)頁,并清空云節(jié)點上存儲的網(wǎng)頁。
4)云端網(wǎng)頁收取:爬蟲端向云端請求已經(jīng)下載的頁面,云端批量返回已經(jīng)下載的頁面;
定時獲取已下載網(wǎng)頁:后端定時從云端獲取已下載網(wǎng)頁隊列中的網(wǎng)頁數(shù)據(jù),收取到網(wǎng)頁后根據(jù)任務ID、URL等關鍵字段刪除本地緩存和數(shù)據(jù)庫中記錄的備份信息。
5)實現(xiàn)下載任務的異常容錯處理和事物控制:通過本地緩存和數(shù)據(jù)庫記錄任務發(fā)送歷史,將收取的網(wǎng)頁和發(fā)送歷史進行對比,一定時間內未下載的網(wǎng)頁視為下載失敗,進行重發(fā)處理。
爬蟲端每次啟動時會查詢數(shù)據(jù)庫中的任務備份信息,恢復未被下載的任務。
爬蟲端定時檢查本地緩存,當有任務加入緩存的時間超過下載時長閾值時,視為下載失敗,重啟該下載任務。
上述具體實施方式僅是本發(fā)明的具體個案,本發(fā)明的專利保護范圍包括但不限于上述具體實施方式,任何符合本發(fā)明的一種利用云端進行并發(fā)采集的爬蟲實現(xiàn)方法的權利要求書的且任何所述技術領域的普通技術人員對其所做的適當變化或替換,皆應落入本發(fā)明的專利保護范圍。