python爬蟲時,判斷IP代理是否有效的解決方法
阿新 • • 發佈:2018-12-26
1、不停的請求測試,可以發現網路IP在不斷更新
import requests import random # 該網站會返回你請求網站時的IP地址資訊 url = 'http://icanhazip.com' #首先我們在xicidaili.com中獲取一些ip代理資訊,放入列表中 proxies_list = [ 'http://117.66.167.116:8118', 'http://118.190.95.35:9001', 'http://116.77.204.2:80', 'http://110.40.13.5:80' ] # ip_list是後續我們用來更新列表用的,儲存真實可用的IP資訊 ip_list = [] flag = 1 while True: proxy_ip = random.choice(proxies_list) proxies = {'http': proxy_ip} try: # 如果請求成功,證明這個ip代理是可用的,我們不修改flag的值 wb_data = requests.get(url=url,proxies=proxies) except: # 如果請求失敗,我們從列表中刪除指定的內容選項 proxies_list.remove(proxies['http']) # 並將flag值置為0 flag = 0 # 之後我們根據flag的值來判斷這個IP地址是否是有效的,這樣可以不斷地測試。 if flag == 1: ip_list.append(proxies['http']) print (ip_list)
2、我們遍歷一次所有的IP地址,輸出可用的IP地址組成的列表
import requests url = 'http://icanhazip.com' proxies_list = [ 'http://117.66.167.116:8118', 'http://118.190.95.35:9001', 'http://116.77.204.2:80', 'http://110.40.13.5:80' ] ip_list = [] for proxy_ip in proxies_list: print (proxy_ip) # print(proxies_list) proxies = {'http': proxy_ip} try: wb_data = requests.get(url=url,proxies=proxies) flag = True except: proxies_list.remove(proxies['http']) flag = False if flag: ip_list.append(proxies['http']) print (ip_list)
如果有需要請自行獲取其他的IP地址,進行除錯