問題場景
一次性爬取豆瓣的電影TOP250時,被服務(wù)器判定為IP異常,需要登錄才能正常使用
原理
爬蟲會干擾到正常的服務(wù)器訪問,所以一般的網(wǎng)站都會有反爬蟲機制,主要的原理是:
- 監(jiān)聽TCP連接;
- 分析請求中的User-Agent和refer信息;
- 訪問時間間隔短,訪問量大
解決方式
python爬取豆瓣電影,被反爬后的解決方式:
-
user_agent
user_agent是瀏覽器類型的詳細(xì)信息,也是瀏覽器提交請求的重要請求頭部字段;
可以提供不同的user_agent,來繞過瀏覽器的反爬機制; -
使用代理和IP輪換
反爬機制最常用的方式之一是檢測IP,因此可以更換不同的IP地址來爬取內(nèi)容; -
設(shè)置訪問時間和間隔
有些網(wǎng)站的會設(shè)置訪問時間間隔,短時間訪問次數(shù)超過了默認(rèn)次數(shù),就會被禁用,因此可以降低訪問頻率,設(shè)置長一點的訪問時間;
自己解決的時候是加headers,盡可能字段多和詳盡,可以暫時解決IP被禁用,但是爬取太多頁面還是會被禁用,所以為了直接解決這個問題,選擇fake_useragent來隨機更換請求頭里的User-Agent字段,達到繞過反爬機制的效果
fake_useragent的使用方法請移步: