Python爬蟲常用的技巧——設置代理IP?在學習Python爬蟲時,經常會遇到要爬的網站,采用了反爬技術,導致爬不上去。網頁信息的高強度、高效率抓取往往會給網站服務器帶來很大壓力,所以同一個IP重復抓取同一個網頁,很可能會被屏蔽。這里有一個爬蟲技能,設置代理IP。
下面簡單介紹一下免費獲取代理IP的方法。這種方法的優點是免費,缺點是爬出來后不可用的多。
IP地址取自國內IP網站和IP模擬器代理。如果我們抓取主頁上的IP地址,或者你可以抓取第一頁和第二頁,一般用途就足夠了。
配置環境
安裝請求庫
安裝bs4庫
安裝lxml庫
絕對代碼
不多說直接上代碼。
動態IP模擬器
get_ip_list(url,headers)函數傳入url和頭,最后返回一個ip列表。該列表的元素類似于122.114.31.177:808格式,該列表包括國內互聯網代理IP網站主頁上的所有IP地址和端口。
get_random_ip(ip_list)函數傳入由第一個函數獲得的列表,并返回一個隨機代理。這個代理可以傳入requests的get方法,這樣你每次運行都可以使用不同的IP訪問抓取的網站,有效避免真實IP被屏蔽的風險。
代理的格式是字典:{ ' http ':' http://122 . 114 . 31 . 177:808 ' },下面的執行也可以封裝成方法。
為了抓取ip,Rhino代理服務器做了反抓取。如果頻繁抓取IP,服務器會主動返回503服務不可用并提示阻止,所以在請求時可以先請求保存一個文件進行讀取,或者抓取一個IP幾分鐘后再抓取,相當于增加了一個定時功能。
代理IP的使用
運行上面的代碼會得到一個隨機的代理,它可以直接傳遞給請求的get方法。
res = requests.get(url,headers=headers,proxies = proxies)
這里要提醒大家的是,免費代理IP的穩定性還是需要討論的。不如建議如何抓取大量信息或者買一些代理IP。