一、爬蟲設計要點

想要向批次抓取某一個網站,就需要自己搭建一套爬蟲框架,搭建前要考慮幾個問題:避免被封IP,圖片驗證碼識別,資料處理等。

封IP最常見的解決方案就是使用代理IP,其中網路爬蟲配合 98IP HTTP代理,響應極速,自營伺服器節點遍布全國,可以很好的輔助完成爬蟲任務。

比較簡單的圖片驗證碼可以自己透過pytesseract庫編寫識別程序,這個只能辨識簡單的拍照類別圖片資料。到更複雜的例如滑動滑鼠,滑塊,動態圖片驗證碼只能考慮購買打碼平台來辨識。

至於資料處理,如果你拿到的資料發現被打亂了,解決辦法就是識別出它的擾亂規律或透過來源js程式碼進行取得透過python的execjs函式庫或其他執行js的函式庫實作資料擷取。


二、分散式爬蟲解決方案

要想實現批量抓取某個大站的資料比較好的方式是透過維護4個佇列。

1.url任務佇列--裡面存放的是待抓取的url資料。

2.原始url佇列--存放的是抓取的網頁中提取出來但是還未經過處理的,處理主要是檢查是否需要抓取,是否重複抓取等。

3.原始資料佇列--存放的是爬取的資料未經過任何處理。

4.二手資料佇列--存放的是進過資料處理程序的待儲存的資料。


以上的隊列分別有4種進程進行監聽執行任務,分別是:

1.爬蟲抓取進程--監聽url任務佇列,抓取網頁資料並將抓到的原始資料丟到原始資料佇列。

2.url處理進程:監聽原始url隊列,過濾掉非正常的url和重複抓取的url。

3.資料擷取流程:監聽原始資料佇列,將原始資料佇列進行關鍵資料的擷取其中包括新的url和目標資料。

4.資料儲存進程:將二手資料整理後存放到mongodb裡面。