专栏首页python前行者python实现简单的一个刷票点赞功能

python实现简单的一个刷票点赞功能

投票网址:http://best.zhaopin.com/?sid=121128100&site=sou

在以上网址中找到“XXX技术有限公司”,通过Python进行刷票。

提示:通过清除cookie可以手动刷票。

首先通过点击网站链接来到该网页,输入要投票的公司

打开审查元素

点击为它点赞

这里的URL是请求地址,post方式请求

data为附带的参数信息

代码

# coding=utf-8


import re
import random
import sys
import time
import datetime
import threading
from random import choice
import requests
import bs4


def get_ip():
    """获取代理IP"""
    url = "http://www.xicidaili.com/nn"
    headers = { "Accept":"text/html,application/xhtml+xml,application/xml;",
                "Accept-Encoding":"gzip, deflate, sdch",
                "Accept-Language":"zh-CN,zh;q=0.8,en;q=0.6",
                "Referer":"http://www.xicidaili.com",
                "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"
                }
    r = requests.get(url,headers=headers)
    soup = bs4.BeautifulSoup(r.text, 'html.parser')
    data = soup.table.find_all("td")
    ip_compile= re.compile(r'<td>(\d+\.\d+\.\d+\.\d+)</td>')    # 匹配IP
    port_compile = re.compile(r'<td>(\d+)</td>')                # 匹配端口
    ip = re.findall(ip_compile,str(data))       # 获取所有IP
    port = re.findall(port_compile,str(data))   # 获取所有端口
    return [":".join(i) for i in zip(ip,port)]  # 组合IP+端口,如:115.112.88.23:8080


# 设置 user-agent列表,每次请求时,可在此列表中随机挑选一个user-agnet
uas = [
    "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:17.0; Baiduspider-ads) Gecko/17.0 Firefox/17.0",
    "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9b4) Gecko/2008030317 Firefox/3.0b4",
    "Mozilla/5.0 (Windows; U; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; BIDUBrowser 7.6)",
    "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko",
    "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0",
    "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36",
    "Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; Touch; LCJB; rv:11.0) like Gecko",
    ]


def get_url(code=0,ips=[]):
    """
        投票
        如果因为代理IP不可用造成投票失败,则会自动换一个代理IP后继续投
    """
    try:
        ip = choice(ips)
    except:
        return False
    else:
        proxies = {
            "http":ip,
        }
        headers2 = {
            "Accept":"*/*",
            "Accept-Encoding":"gzip, deflate, sdch",
            "Accept-Language":"zh-CN,zh;q=0.8,en;q=0.6",
            "Referer":"https://best.zhaopin.com/",
            "User-Agent":choice(uas),
        }
        datas = {'bestid': 3713, 'source': 'best'}
    try:
        hz_url = "https://best.zhaopin.com/API/Vote.ashx"   # 某投票网站的地址,这里不用真实的域名
        hz_r = requests.post(hz_url,headers=headers2,data=datas,proxies=proxies)
    except requests.exceptions.ConnectionError:
        print "ConnectionError"
        if not ips:
            print "not ip"
            sys.exit()
        # 删除不可用的代理IP
        if ip in ips:
            ips.remove(ip)
        # 重新请求URL
        get_url(code,ips)
    else:
        date = datetime.datetime.now().strftime('%H:%M:%S')
        print u"第%s次 [%s] [%s]:投票%s (剩余可用代理IP数:%s)" % (code,date,ip,hz_r.text,len(ips))


ips = []
for i in xrange(6000):
    # 每隔1000次重新获取一次最新的代理IP,每次可获取最新的100个代理IP
    if i % 1000 == 0:
        ips.extend(get_ip())
    # 启用线程,隔1秒产生一个线程,可控制时间加快投票速度 ,time.sleep的最小单位是毫秒
    t1 = threading.Thread(target=get_url,args=(i,ips))
    t1.start()
    time.sleep(1)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python库简单说明(持续更新...)

    目前,网上已有成千上万个Python包,但几乎没有人能够全部知道它们。单单 PyPi上就有超过47000个包列表。

    周小董
  • python引入模块报错ValueError: attempted relative import beyond top-level package

    和 ValueError: attempted relative import beyond top-level package

    周小董
  • python zip()方法

    它是Python的内建函数,(与序列有关的内建函数有:sorted()、reversed()、enumerate()、zip()),其中sorted()和zip...

    周小董
  • 利用Python实现自动投票以及自动爬虫IP代理

    因为某件事,朋友们在网络上搞起投票行为,为了帮朋友们,特意用python写下了这个投票代码的爬虫

    python学习教程
  • Flink Checkpoint 原理流程以及常见失败原因分析

    目前有赞实时任务主要以 Flink 为主,为了保证实时任务的容错恢复以及停止重启时的状态恢复,几乎所有的实时任务都会开启 Checkpoint 或者触发 Sav...

    有赞coder
  • LoadRunner12工具介绍(连载6)

    有一些软件为了防止DDoS攻击,不允许在短的时间内使用单个IP在比较,重复执行多个操作,如61左边所示。如果可以模拟多个IP操作后,这些操作就被允许了,如61右...

    小老鼠
  • 【运营之路】复旦大学微信公众号小编手记: 一切为了成就心目中最好的大学

    2014年元旦后的第一天,复旦大学微信公共平台悄然上线,主编老师说,开通微博时,我们还觉得自己在追赶时髦,而微信来袭后,我们觉得自己在被时髦追赶,如同奔跑中不断...

    腾讯高校合作
  • 分享如何利用爬虫技术完全实现类似天眼查、企查查、八爪鱼、火车头网络爬虫工具?

    我们都知道未来互联网最大的趋势就是大数据和AI人工智能。在大数据时代如果谁掌握了数据源谁就掌握了财富。像天某查、企某查、启某宝等这种大数据公司主...

    孔雀
  • Dubbo + RestEasy 实现文件上传与下载

    原文链接:https://blog.csdn.net/weixin_43057263/article/details/...

    微风-- 轻许--
  • Django添加feeds功能

    概念:RSS和Atom都是基于XML的格式,你可以用它来提供有关你站点内容的自动更新的feed。了解更多关于RSS的可以访问http://www.whatisr...

    緣來

扫码关注云+社区

领取腾讯云代金券