突然发现问题来了,只能提交一次!为什么呢?
3.构造代理IP池
大多数投票站点将记录投票的IP地址,以避免对同一IP进行多次投票。我应该怎么办?我们可以模仿真实的投票,但不能更改IP地址吗?可以更改IP地址,但是比较麻烦。我们有一个更简单的方法:使用代理服务器来爬网某个网站的内容,而另一方的网站不是我们的真实IP地址,而是代理服务器。在IP地址中,代理服务器设置的使用非常简单。
3. 1找到了代理IP
以下是的推荐免费代理IP,,值得您使用
使用API可以快速获取我们需要的IP地址。当然,我们也可以作为爬网程序来爬网其网站上的URL。我不会在这里讨论。
3. 2构造一个IP代理容器
由于从API获得的数据具有更多的换行符和回车符,因此不利于直接提取IP地址,因此请先使用正则表达式直接提取所需的信息,然后再将其写到列表中以方便稍后阅读。
def WriteIPadress():
all_url = [] # 存储IP地址的容器
# 代理IP的网址
url = "http://api.xicidaili.com/free2016.txt"
r = requests.get(url=url)
all_url = re.findall("\d+\.\d+\.\d+\.\d+\:\d+",r.text)
with open("D:\\code\\python\\new\\Brush ticket\\IP.txt",'w') as f:
for i in all_url:
f.write(i)
f.write('\n')
return all_url
4.主要功能
count = 0 # 计数器
while count < 4000:
all_url = WriteIPadress()
for i in all_url:
proxies = {"http": i}
try:
r = requests.post(url=url, data=params, headers=headers, proxies=proxies)
if(r.json()['flag'] == True):
count += 1
print("成功投票%d次!" % (count))
print(r.json())
except Exception as reason:
print("错误原因是:",reason)
由于某些IP地址存在问题,因此有必要设置异常处理,以便程序可以正常运行,并且API数据每15分钟更新一次,而我们遍历该列表的时间大致相同,因此将不会进行其他处理。
运行日志
源代码
完整的源代码
个人博客,最新更新的文章都发布在这里,欢迎关注:
支付宝转账赞助
支付宝扫一扫赞助
微信转账赞助
微信扫一扫赞助