看过之前的博客的都知道,博主最近在捣腾芝麻代理,白嫖免费IP,对于使用方法我就不做说明了,我不是宣传人,进入正题!如果看了有不懂或有问题请评论指正!
提示:以下是本篇文章正文内容,下面案例可供参考
这里插一嘴,教程中的代码需要这样配置: 1、一定要是json格式 2、提取数量大于1(提取不花钱,使用才花钱) 3、属性一定要有IP:Port、过期时间 其他无所谓
爬虫增加代理池:使用稳定第三方芝麻代理IP 教程(详细可用)
每日需要手动领取,且当天失效,贼麻烦,不动手获取看这里:
【Python】记录抓包分析自动领取芝麻HTTP每日免费IP(成品+教程)
如下图,可以看到个别时长比较短,当然你有钱,可以去开通时长长的,我用的是免费的只有0~25分钟 成品图:
相同的情况下随机取一个即可
代码如下:
# -*- coding: utf-8 -*-
import requests
import datetime
#芝麻ip时间选优算法
# 获取芝麻代理ip
# url选择json
url = "官方给你的接口"
# url选择json
body = {
}
headers = {
}
response = requests.post(url, json=body, headers=headers)
# print(response.text)
ip_data = response.json()
# print(ip_data['code'])
if ip_data['code']==0:
print("获取芝麻代理ip成功");
#每次读取10条记录对比,芝麻ip每日免费20个
global excellent_ip
global excellent_ip_port
new_data=ip_data
member = []
#建立数据入口
date1 = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
d1 = datetime.datetime.strptime(date1, '%Y-%m-%d %H:%M:%S')
for geshu, val1 in enumerate(ip_data['data']):
#获得ip个数geshu
print(new_data['data'][geshu])
# 将每个时间转换为时间戳加入新数组
new_time=new_data['data'][geshu]['expire_time']
d2 =datetime.datetime.strptime(new_time, '%Y-%m-%d %H:%M:%S')
d = d2-d1
sec= format(d.seconds);#获取秒数
sec=int(sec)
member.append(sec)
# print(member)
# 冒泡排序
member.sort(reverse=True)
#从大到小
print(member)
#最优结果:
print("最优时间结果");
print(member[0]);
#对比得到该时间的ip
for geshu2, val2 in enumerate(ip_data['data']):
#获得ip个数geshu
new_time2=new_data['data'][geshu2]['expire_time']
d2 =datetime.datetime.strptime(new_time2, '%Y-%m-%d %H:%M:%S')
d = d2-d1
#减去固定的时间点
sec= format(d.seconds);#获取秒数
sec=int(sec)
if sec==member[0]:
print(sec)
print("符合最优时间的ip及其端口:")
print(new_data['data'][geshu2]['ip'])
print(new_data['data'][geshu2]['port'])
excellent_ip=new_data['data'][geshu2]['ip']
excellent_ip_port=new_data['data'][geshu2]['port']
# TODO: write code...
# TODO: write code...
else:
print("获取ip失败");
print("最后选择结果:");
print(excellent_ip)
print(excellent_ip_port)
提示:这里对文章进行总结: 本文侧重第三部分,说一下思路,将获取到的IP到期时间与当前时间比较,通过排序后选出时间最长的一个(包含相同时间)IP,在结合业务处理下即可!!
以上就是今天要讲的内容