1. 程式人生 > >python爬蟲時,判斷IP代理是否有效的解決方法

python爬蟲時,判斷IP代理是否有效的解決方法

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地址,進行除錯