首先使用ip代理接口获取txt格式的ip代理数据,再使用random模块从中随机获取ip
前言
本文使用的是某ip代理网站的动态共享代理,从接口批量获取ip代理并从中随机获取ip
一、生成代理api接口
二、从接口获取ip
class get_ip():
def __init__(self):
self.proxy_list = []
self.proxy_api = 'ip代理链接'
self.get_proxies()
self.number = 0
def get_proxies(self):
# 使用get方法获取ip
response = requests.get(self.proxy_api)
# 以'\n'分割数据
proxies = response.text.split('\n')
proxies = proxies[:-1]
for proxy in proxies:
# strip()用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列
proxy = proxy.strip()
# 将'http://127.0.0.1'格式的ip地址加入列表
self.proxy_list.append('http://' + proxy)
首先定义一个gei_ip类用来获取随机ip
self.proxy_list 用来存放从接口获取的ip
self.proxy_api为ip代理的api链接
三、从ip列表随机获取ip
def get_random_ip(self):
# 方法一 每隔10秒重新请求一次接口获取ip
# if datetime.datetime.now().second % 10 == 0:
# 方法二 使用一次ip则计数加1,每20次重新请求一次接口获取ip
self.number += 1
if self.number % 20 == 0:
self.proxy_list = []
self.get_proxies()
# print(self.proxy_list)
# print(self.number)
# 若ip列表为空 则说明正在请求接口 等待一秒
if not self.proxy_list:
time.sleep(1)
proxy_ip = random.choice(self.proxy_list)
proxies = {'https': proxy_ip,
'http': proxy_ip}
return proxies
总结
两种思路从接口获取随机ip,使用时需进一步考虑错误处理和并发量的问题,自己调整请求接口的频率