一、爬蟲設計要點
想要向批次抓取某一個網站,就需要自己搭建一套爬蟲框架,搭建前要考慮幾個問題:避免被封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裡面。