使用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 ...
随机推荐
- Hadoop启动错误——ERROR: Attempting to operate on hdfs namenode as root but there is no HDFS_NAMENODE_USER defined. Aborting operation.
错误如下所示; [root@localhost sbin]# start-all.sh Starting namenodes on [192.168.71.129] ERROR: Attempting ...
- hexo 接入Google站长工具(google search console)提交sitemap
1.点击google search console 2.选择 点击红圈的按钮 新建资源 3.资源类型 选择网址前缀, 输入网站的url 4.输入完成后的点击验证 下载html 放在hexo 项目下的 ...
- 《PHP程序员面试笔试真题解析》——新书上线
你好,是我--琉忆.很高兴可以跟你分享我的新书. 很高兴,在出版了PHP程序员面试笔试宝典后迎来了我的第二本书出版--<PHP程序员面试笔试真题解析>. 如果你是一个热爱PHP的程序员,刚 ...
- WPF之复选MVVM TreeView(TreeView+CheckBox)
需求背景: 当我们用到权限菜单栏时权限菜单栏属于递归效果,我们需要用到TreeView+CheckBox进行组合复选开发时,我们需要解决此类问题时怎么办,那么就引出今天的小笔记内容 实现方式: 下载M ...
- Xshell在Windows和Linux间文件的上传和下载
本文通过lrzsz来实现Windows和Linux间文件间的文件传输. lrzsz使用 XMODEM.YMODEM 和 ZMODEM 文件传输协议来实现文件的上传和下载.相比 FTP 或者 WinSC ...
- 如何深入学习Java并发编程?
在讲解深入学习Java并发编程的方法之前,先分析如下若干错误的观点和学习方法. 错误观点1:学习Java编程主要是学习多线程. 这话其实是说明了表面现象,多线程其实还真是并发编程的实现方式,但在实际高 ...
- [旧][Android] Retrofit 初步使用
备注 原发表于2016.04.13,资料已过时,仅作备份,谨慎参考 Retrofit 是什么? Retrofit is a type-safe HTTP client for Android and ...
- Kafka经典三大问:数据有序丢失重复
Kafka经典三大问:数据有序丢失重复 在kafka中有三个经典的问题: 如何保证数据有序性 如何解决数据丢失问题 如何处理数据重复消费 这些不光是面试常客,更是日常使用过程中会遇到的几个问题,下面分 ...
- 利用SSH隧道加密技术隐蔽C&C通信流量
在网络攻防博弈中,网络流量特征分析类安全防御措施得到了广泛应用.众多厂商和企业对网络流量进行恶意流量分析检测,从而针对性的采取防御措施,如各级ISP在骨干网络设备上大多采用网络流量分析检测的防御方案. ...
- Dell服务器配置RAID1+RAID0磁盘阵列
有台DELL R730的服务器,需要部署下公司的程序,这里记录下raid配置. 环境要求 两块硬盘做raid 1 一块硬盘做raid 0 服务器开机,开始配置raid 服务器开机,在出现下图提示时,同 ...