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