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