python網路爬蟲(沒有使用scrapy)中如何克服封ip問題?
本人在爬取鏈家網二手房信息,通過一個循環遍歷所有的城區,但是由於數目較多,爬去速度較快(已經使用time.sleep限制了爬行速率),但是還是會遇到一段時間之後讓我輸入驗證碼(選擇倒置房屋圖片,無法使用機器識別),再過一段時間會封鎖ip,之前搜索過用proxies進行解決,但是好像沒用對,想請教一下proxies的用法。
以下是我的設計,隨機抽取ip池中的ip,我看過別人寫的代碼,直接將所有ip寫到一個字典中,用作proxies,我也試過了,為何還是不行?請教前輩。
封殺ip一般都是防止爬蟲的大殺器,一般沒什麼網站用的。
如果是利益相關,可以考慮付費使用代理。
其實有一個東西叫做 tor 的東西,供你使用。
不過我一般不傾向於是ip的問題。
你用代理,防爬就沒辦法追蹤到源IP嗎?
只有真正的分散式
才好解決滴。
而且,你用代理的這些IP,是真的好IP嘛
一般別直接考慮是IP的問題, 沒人打仗直接上核彈.
1. 最基本的, 你User-Agent換了沒?
2. cookie 分析了沒?
樓主,你解決這個問題了么?我最近也在爬,一般爬100條左右就會流量異常,人肉驗證一次後可以繼續爬100條左右。
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36",
"connection":"keep-alive",
"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Encoding":"gzip, deflate, sdch",
"Accept-Language":"zh-CN,zh;q=0.8",
}
我頭文件這麼寫的,用的requests
很少出現ip被封的情況,一般考慮爬蟲偽裝的像不像普通用戶在瀏覽。
另外不要使用透明代理,會暴露來源ip。
純手寫爬蟲建議使用requests庫,或者非同步的aiohttp庫,更好用一點。推薦閱讀:
※怎樣自學Python?
※學習數據結構有什麼用?
※為什麼 Python 中的複數形式是 (a + bj) 而不是 (a + bi) ?
※py交易的梗是怎麼出現的?
※我用flask-sqlalchemy為什麼無法更新我的sqlite文件?