Python爬蟲的一種常見技術--設置代理IP。在學習Python爬蟲的時候,經常會遇到網站被抓取,而使用了反抓取技術,使得爬不上去。高強度、高效率的網頁信息抓取往往給網站服務器帶來很大的壓力,同一個IP對同一個網頁的重復抓取很容易被封。這里是一個爬蟲技巧,設置代理IP。
動態IP模擬器
以下是免費獲取代理IP的方法簡介。這種方法的優點是它是免費的,缺點是它在爬出后是不可用的。IP地址取自國內IP網站和IP模擬器代理。如果我們在首頁上刮IP地址,或者你可以刮第一頁和第二頁,這就足夠了。
配置環境。
安裝請求庫。
安裝BS 4庫。
安裝lxml庫。
絕對代碼。
話不多說直接給代碼。
get_ip_list(url,headers)函數傳遞url和headers,最后返回一個ip列表。該列表的內容類似于122.114.31.177:808的格式,該列表包含了國內互聯網代理IP網站主頁上的所有IP地址和端口。
get_random_ip(ip_list)函數傳遞第一個函數獲得的列表,并返回一個隨機代理。可以將該代理傳遞給請求的get方法,這樣每次運行爬行網站時都可以使用不同的IP訪問爬行網站,有效地避免了真實IP被阻塞的風險。
代理格式是一個字典:{http:http://122.114.31.177:808'},下面的執行也可以封裝成一個方法。
為了獲取ip,IP代理服務器會進行反抓取。如果IP經常被捕獲,服務器將主動返回503服務不可用并提示阻止,因此您可以請求保存文件以便在請求時讀取,或者在抓取之前抓取IP數分鐘,這相當于添加計時器功能。
代理IP使用情況。
運行上述代碼將產生一個隨機代理,該IP代理可以直接傳遞給請求的get方法。
Res=requests.get(url,頭=頭,代理=代理)。
在這里我想提醒大家的是,免費代理IP的穩定性還有待商榷,最好是建議如何獲取大量信息或購買代理IP。