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