使用pyautogui自动在某网站投票的脚本
网页自动投票:
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Hiuhung Wan import re
import pyperclip
import pyautogui as py
from time import sleep def select(line):
'''
勾选要投票的行。
第一行打勾的处的坐标是是:1100,93,每一行的行距是73
:param line:行号
:return:None
'''
x = 1100
y = 93 + (line - 1) * 73
py.click(x, y)
sleep(0.3) def open_url(url):
'''
打开网页
:param url:网址
:return:None
'''
py.rightClick(x0 + 16, y0 + 16)
sleep(1)
# 无痕模式
py.click(x0, y0 - 100)
sleep(1)
# 按F6,把光标切换到地址栏
py.press("f6")
sleep(0.2)
# 输入url
py.typewrite(url)
sleep(0.2)
py.press("enter")
sleep(5) def get_vote_num():
'''
获取目前最新票数
:return:目前最新票数的列表
'''
# 点击到界面里
py.click(int(screen_x / 2 - 220), int(screen_y / 2))
sleep(0.1)
# 鼠标向下滚400,滚到最底部
py.scroll(-400)
sleep(0.5)
# 全选网页文字
py.hotkey('ctrl', 'a')
# 复制
py.hotkey('ctrl', 'c')
sleep(0.1)
py.click()
# 读取粘贴板信息
str0 = pyperclip.paste()
# 去掉回车
str0 = str0.replace('\n', '')
# print(str0)
res = re.findall(r'\d+', str0)
# 用于存放大于100的数字
list_vote = []
for i in res:
j = int(i)
if j > 100:
list_vote.append(j)
# 把第一个2018删掉
del list_vote[0]
print("票数分别是:", list_vote)
return list_vote def get_line_num_of_voting(list_vote):
'''
传入全部人员的票数,得到要进行投票的序号(行号)
:param list_vote:目前最新票数的列表
:return:要进行投票的序号(行号)
'''
# 复制一份
list_vote_bak = list_vote[:]
# 去掉自己的票,刚好位于最后
list_vote_bak.pop(-1)
list_vote_bak.sort()
# 票数最少的前5名
list_vote_bak = list_vote_bak[:5]
# print(list1)
# 存放要选取的公司位于第几行
list_line_num = []
for i in list_vote_bak:
if i in list_vote:
j = list_vote.index(i)
list_vote[j] = 0
list_line_num.append(j + 1)
list_line_num.sort()
print("最少票行号:", list_line_num)
# 把自己加上
list_line_num.append(12)
return list_line_num def voting(list_line_num):
'''
投票
:param list_line_num: 要进行投票的序号(行号)
:return: None
'''
# 勾选
for i in list_line_num:
select(i)
# 提交投票
py.click(980, 1005)
sleep(1)
# 关闭窗口
py.click(1900, 13)
sleep(1) if __name__ == '__main__':
url = 'https://dwz.cn/ymfarMUf'
# 屏幕分辨率,如1920*1080
screen_x, screen_y = py.size()
# 在屏幕底端(任务栏)找到浏览器图标
x0 = 255
y0 = 1047
for i in range(2):
open_url(url)
voting(get_line_num_of_voting(get_vote_num()))
不到15秒,可以投完一轮
票数分别是: [744, 744, 743, 744, 742, 743, 771, 742, 742, 743, 742, 1022]
最少票行号: [3, 5, 8, 9, 11]
票数分别是: [744, 744, 744, 744, 743, 743, 771, 743, 743, 743, 743, 1023]
最少票行号: [5, 6, 8, 9, 10]
今天刷票的时候,发现偶尔会因为5秒还没打开完网页而发生异常,所以加入了异常处理,
还有就是每次投完票后,检查是否投票成功。
最后说一下,x0,y0需要根据自己电脑设置
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Hiuhung Wan import re
import pyperclip
import pyautogui as py
from time import sleep def select(line):
'''
勾选要投票的行。
第一行打勾的处的坐标是是:1100,93,每一行的行距是73
:param line:行号
:return:None
'''
x = 1100
y = 93 + (line - 1) * 73
py.click(x, y)
sleep(0.3) def open_url(url):
'''
打开网页
:param url:网址
:return:None
'''
py.rightClick(x0 + 16, y0 + 16)
sleep(1)
# 无痕模式
py.click(x0, y0 - 100)
sleep(1)
# 按F6,把光标切换到地址栏
py.press("f6")
sleep(0.2)
# 输入url
py.typewrite(url)
sleep(0.2)
py.press("enter")
sleep(5) def get_vote_num():
'''
获取目前最新票数
:return:目前最新票数的列表
'''
# 点击到界面里
py.click(int(screen_x / 2 - 220), int(screen_y / 2))
sleep(0.1)
# 鼠标向下滚400,滚到最底部
py.scroll(-400)
sleep(0.5)
# 全选网页文字
py.hotkey('ctrl', 'a')
# 复制
py.hotkey('ctrl', 'c')
sleep(0.1)
py.click()
# 读取粘贴板信息
str0 = pyperclip.paste()
# 去掉回车
str0 = str0.replace('\n', '')
# print(str0)
res = re.findall(r'\d+', str0)
# 用于存放大于100的数字
list_vote = []
for i in res:
j = int(i)
if j > 100:
list_vote.append(j)
# 把第一个2018删掉
del list_vote[0]
print("票数分别是:", list_vote)
return list_vote def get_line_num_of_voting(list_vote):
'''
传入全部人员的票数,得到要进行投票的序号(行号)
:param list_vote:目前最新票数的列表
:return:要进行投票的序号(行号)
'''
# 复制一份
list_vote_bak = list_vote[:]
# 去掉自己的票,刚好位于最后
list_vote_bak.pop(-1)
list_vote_bak.sort()
# 票数最少的前5名
list_vote_bak = list_vote_bak[:5]
# print(list1)
# 存放要选取的公司位于第几行
list_line_num = []
for i in list_vote_bak:
if i in list_vote:
j = list_vote.index(i)
list_vote[j] = 0
list_line_num.append(j + 1)
list_line_num.sort()
# print("最少票行号:", list_line_num)
# 把自己加上
list_line_num.append(12)
return list_line_num def voting(list_line_num):
'''
投票
:param list_line_num: 要进行投票的序号(行号)
:return: None
'''
# 勾选
for i in list_line_num:
select(i)
# 提交投票
py.click(980, 1005)
sleep(1)
# 判断有无投票成功
# 全选网页文字
py.hotkey('ctrl', 'a')
# 复制
py.hotkey('ctrl', 'c')
# 读取粘贴板信息
str0 = pyperclip.paste()
if '投票成功' not in str0:
# 投票不成功
print("投票不成功!!")
py.click(1900, 13)
sleep(1)
# else: # 投票成功
# pass
# 关闭窗口
py.click(1900, 13)
sleep(1) if __name__ == '__main__':
url = 'https://dwz.cn/ymfarMUf'
# 屏幕分辨率,如1920*1080
screen_x, screen_y = py.size()
# 在屏幕底端(任务栏)找到浏览器图标
x0 = 157
y0 = 1047
for i in range(200):
try:
open_url(url)
voting(get_line_num_of_voting(get_vote_num()))
except:
print("发生了异常")
# 关闭窗口
py.click(1900, 13)
sleep(1)
使用pyautogui自动在某网站投票的脚本的更多相关文章
- iptables自动屏蔽访问网站最频繁的IP
iptables自动屏蔽访问网站频繁的IP 屏蔽每分钟访问超过200的IP 方法1:根据访问日志(Nginx为例 #!/bin/bash DATE=$(date +%d/%b/%Y:%H:%M) AB ...
- linux - 怎么自动填写有交互的shell脚本 - SegmentFault
linux - 怎么自动填写有交互的shell脚本 - SegmentFault TCL/Expect交互式自动化测试概要 - - ITeye技术网站 expect是一种基于TCL,能与交互式程序进行 ...
- Web前端性能优化教程05:网站样式和脚本
本文是Web前端性能优化系列文章中的第五篇,主要讲述内容:网站样式和脚本代码的放置位置.使用外部javascript和css.完整教程可查看:Web前端性能优化 一.将样式表放在顶部 可视性回馈的重要 ...
- 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助
初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: var fs = require('f ...
- Python 网站后台扫描脚本
Python 网站后台扫描脚本 #!/usr/bin/python #coding=utf-8 import sys import urllib import time url = "ht ...
- 定时自动从FTP服务器取数据脚本
环境需求:某些情况下经常需要向FTP服务器取文件,可以用定时任务执行简单脚本自动去取相应文件. 一般用法: ~]# ftp IP地址 端口 //ftp命令可以通过yum install ftp方式 ...
- linux下EOF写法梳理 自动新建分区并挂载的脚本
linux下EOF写法梳理 - 散尽浮华 - 博客园 https://www.cnblogs.com/kevingrace/p/6257490.html 在平时的运维工作中,我们经常会碰到这样一个场景 ...
- 通过kfed自动获取磁盘信息的小脚本
通过kfed自动获取磁盘信息的小脚本 编译KFED [oracle@rac lib]$cd $ORACLE_HOME/rdbms/lib [oracle@rac lib]$ pwd /u01/app/ ...
- 获取网站title的脚本
脚本在此 公司的商城需要添加一个脚本,这个脚本就是观察首页页面是否正常,虽然已经配置了zabbix监控网站是否200,但是有一些特殊的情况,比如网页可以打开但是页面是"file not fo ...
随机推荐
- Java中Integer 和 int的区别
基本概念的区分: 1.Integer 是 int 的包装类,int 则是 java 的一种基本数据类型 2.Integer 变量必须实例化后才能使用,而int变量不需要 3.Integer 实际是对象 ...
- 《PHP程序员面试笔试宝典》——如何回答非技术性问题?
如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> 评价一个人的能力,除了专业能力,还有一些非专业能力,如智力.沟通能力和反应能力等,所以在IT企业招聘过程的笔试.面试环节 ...
- Solution -「洛谷 P4449」于神之怒加强版
\(\mathcal{Description}\) Link. 给定 \(k\) 和 \(T\) 组 \(n,m\),对于每组,求 \[\sum_{i=1}^n\sum_{j=1}^m\ope ...
- 疑难杂症:运用 transform 导致文本模糊的现象探究
在我们的页面中,经常会出现这样的问题,一块区域内的文本或者边框,在展示的时候,变得特别的模糊,如下(数据经过脱敏处理): 正常而言,应该是这样的: emmm,可能大图不是很明显,我们取一细节对比,就非 ...
- ssh 连接出现expecting SSH2_MSG_KEX_ECDH_REPLY失败解决
问题描述: ssh连接通过ipsec后连接卡住:ssh -vvv显示: echo "1420" > /sys/class/net/eth0/mtu #把mtu值设置一下默认是 ...
- python中特殊参数self的作用
特殊参数self的作用:self会接收实例化过程中传入的数据,当实例对象创建后,实例便会代替 self,在代码中运行. self代表的是类的实例本身,方便数据的流转.对此,我们需要记住两点: 第一点: ...
- k8s核心资源之:名称空间(ns)
简介 是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或者用户组. 常见的pod.service.replicaSet和deployment等都是属于某一个namespac ...
- Java诊断神器:Arthas常用功能
最新原文:https://www.cnblogs.com/uncleyong/p/14944401.html Arthas是Alibaba开源的Java诊断工具,功能很强大,它是通过Agent方式来连 ...
- Dashboard究竟是什么,它在数据展示上的优势何在?
相信很多人在做数据分析工作的时候都遇到这种情况,辛辛苦苦做出来的数据报表老板看了嫌弃不够直观.生动,客户看了嫌弃不够高大上.这个时候不妨尝试一下使用Dashboard来展示报表数据,可能有些人对Da ...
- shell脚本练习案例
转至:https://www.cnblogs.com/tui463/archive/2004/01/13/12663024.html shell脚本练习案例 案例一:通过位置变量创建系统账户及密码 分 ...