當抓取數據逐漸增大時,服務器的負荷會加大,會直接封掉來訪IP:
采取措施:
1.創建請求頭部信息:
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.9 Safari/537.36'} #創建請求頭 strhtml = requests.get(url,headers = headers); #使用GET方式,獲取網頁數據
2.我們就只修改User-Agent還不夠,爬蟲1秒鍾可以抓取很多圖片,通過統計IP的訪問頻率,頻率超過閾值,會返回一個驗證碼,如果是用戶訪問,用戶就會填寫繼續訪問,而代碼訪問就會被封IP,有兩種解決方法:
(1)增設延時 (耗時)
import time time.sleep(3)#每3秒抓取1次
(2)構建自己代理IP池
proxies = { "http": "http://10.10.1.10:3128", "https": "http://10.10.1.10:1080", } url="http://www.cntour.cn/" #需要爬取的網址 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.9 Safari/537.36'} #創建請求頭 strhtml = requests.get(url,headers = headers,proxies=proxies);