天啟IP告訴你分布式爬蟲的設(shè)計要點
天啟IP告訴你分布式爬蟲的設(shè)計要點。
一、爬蟲設(shè)計要點
想要向批量抓取某一個網(wǎng)站,就需要自己搭建一套爬蟲框架,搭建前要考慮幾個問題:避免被封IP,圖片驗證碼識別,數(shù)據(jù)處理等。
封IP最常見的解決方案就是使用代理IP,其中網(wǎng)絡(luò)爬蟲配合天啟HTTP代理,響應(yīng)極速,自營服務(wù)器節(jié)點遍布全國,可以很好的輔助完成爬蟲任務(wù)。
比較簡單的圖片驗證碼可以自己通過pytesseract庫編寫識別程序,這個只能識別簡單的拍照類圖片數(shù)據(jù)。到更加復(fù)雜的比如滑動鼠標(biāo),滑塊,動態(tài)圖片驗證碼只能考慮購買打碼平臺進行識別。
至于數(shù)據(jù)處理,如果你拿到的數(shù)據(jù)發(fā)現(xiàn)被打亂了,解決辦法就是識別出它的擾亂規(guī)律或者通過源js代碼進行獲取通過python的execjs庫或者其他執(zhí)行js的庫實現(xiàn)數(shù)據(jù)提取。
二、分布式爬蟲解決方案
要想實現(xiàn)批量抓取某個大站的數(shù)據(jù)比較好的方式是通過維護4個隊列。
1.url任務(wù)隊列--里面存放的是待抓取的url數(shù)據(jù)。
2.原始url隊列--存放的是抓取的網(wǎng)頁中提取出來但是還未經(jīng)過處理的,處理主要是檢查是否需要抓取,是否重復(fù)抓取等。
3.原始數(shù)據(jù)隊列--存放的是爬取的數(shù)據(jù)未經(jīng)過任何處理。
4.二手?jǐn)?shù)據(jù)隊列--存放的是進過數(shù)據(jù)處理進程的待存儲的數(shù)據(jù)。
以上的隊列分別有4種進程進行監(jiān)聽執(zhí)行任務(wù),分別是:
1.爬蟲抓取進程--監(jiān)聽url任務(wù)隊列,抓取網(wǎng)頁數(shù)據(jù)并將抓到的原始數(shù)據(jù)丟到原始數(shù)據(jù)隊列。
2.url處理進程:監(jiān)聽原始url隊列,過濾掉非正常的url和重復(fù)抓取的url。
3.數(shù)據(jù)提取進程:監(jiān)聽原始數(shù)據(jù)隊列,將原始數(shù)據(jù)隊列進行關(guān)鍵數(shù)據(jù)的提取其中包括新的url和目標(biāo)數(shù)據(jù)。
4.數(shù)據(jù)存儲進程:將二手?jǐn)?shù)據(jù)整理過后存放到mongodb里面。