爬蟲使用ip代理注意事項
由于爬蟲爬取速度過快,可能會遇到同一個IP訪問過于頻繁的問題,網(wǎng)站就會讓我們輸入驗證碼再登錄或直接封鎖IP,這樣會給爬取帶來極大的不便。
通過使用代理服務(wù)器軟件隱藏IP,在爬取過程中不斷更換ip地址,就不會被封鎖,達(dá)到很好的數(shù)據(jù)成果。即使用了ip代理,也不能百分百的保障不會遇到問題,或者IP不會被封,在使用的過程中可能會因為行為問題暴露了,又或者是ip修改器有效性低,導(dǎo)致出現(xiàn)的問題,還有其他的一些原因也會影響到這樣的后果,解決這些問題也是有方法的。
1、web端做了一層緩存
挑選一定數(shù)量的ip,每隔2-3分鐘,進(jìn)行檢測,這個檢測就不需要是爬取的網(wǎng)站的url,因為測試過能夠連接代理訪問即可,例如baidu之類的比較大眾的網(wǎng)站.
2、使用了bloomfilter進(jìn)行判重
獲取的ip代理可能之前有判定重復(fù)的,通過檢查判重,減少資源消耗。每隔一定時間bf會被清空,python本身自帶bf,當(dāng)時好像遇到什么問題了,實際使用與需求有點不符,具體記不清楚了,最后摒棄了自帶的bf,使用了別人的一個bf on redis的項目.paramiao/pydrbloomfilter其實我就是想用用bf而已.造輪子花費時間,就暫時不造了.
3、ip代理通過輪詢的方式給出
后續(xù)想更新算法,根據(jù)時間與計數(shù)挑選。
4、多進(jìn)程進(jìn)行ip判定
防止數(shù)量太多進(jìn)程一直運行.目前判定進(jìn)程數(shù)是直接配置在配置文件中的,后面想做到自適應(yīng).
5、數(shù)據(jù)庫使用redis
redis這里作為兩點,一個是數(shù)據(jù)存儲,一個是web的緩存.而且redis本身又不是很大.用在這里很適合.而且bf-redis項目中,也在使用redis.
6、目標(biāo)網(wǎng)站檢測使用的反爬蟲方式
ip代理,隨機(jī)agent,帶cookie訪問。
由于IP會失效,這可能會遇到許多問題,大家對于找出原因,對癥下藥處理,使用動態(tài)ip海,海量的IP資源隨意切換,高匿名ip代理可以更好的隱藏起用戶的真實IP。
版權(quán)聲明:本文為ipadsl.cn所屬公司原創(chuàng)作品,未經(jīng)許可,禁止轉(zhuǎn)載!