借助pyautogui库,我们可以轻松地控制鼠标、键盘以及进行图像识别,实现自动抢课的功能

1.准备工作

我们在仓库里提供了2个必须的文件,包括:

  • auto_get_lesson_pic_recognize.py:脚本文件
  • info.xlsx:执行操作信息文件

在运行这个脚本(
auto_get_lesson_pic_recognize.py)前,你需要:

1.安装python并成功配置环境变量,可以在cmd下这样检查;若返回版本号,则已安装

python --version

2.安装以下的依赖,windows用户请以管理员用户运行cmd并依次执行:

# pyautogui库
pip install pyautogui
# 读取excel表格的库
pip install xlrd==1.2.0
# 向计算机的剪贴板发送文本/从计算机剪贴板接收文本的库
pip install pyperclip
# 计算机视觉库
pip install opencv-python
# 图像处理库
pip install pillow

到此,成功安装了5个库

2.配合使用py脚本和xlsx文件

第一步

需要将抢课的每一步所需要点击的图标/超链接在头脑中想清楚

第二步

将抢课每一步的所需点击的图标/超链接截图,保存在和py脚本同一路径下


打开excel表格,根据第一行提示在单元格中进行输入:

  • A列------备注(可填可不填)
  • B列------操作类型,目前包括:
  • 1.左键单击(循环直到找到图片为止):意思就是如果没有找到你设置的那张图片,它就一直找下去,找不到就不停;你所设置的次数是找到成功的次数
  • 2.输入字符串
  • 3.等待
  • 4.热键
  • 5.左键单击(无需找到图片):找图片不管找没找到,就找那这么多次,次数=找到成功的次数+找到失败的次数
  • C列------B列的参数
    • 待点击图标名(包括图片后缀名,如.png)
    • 等待的时间(秒)
    • 输入的字符串
    • 热键
      • D列------单击重复次数
      • 不填,默认为1
      • 若想无限单击,填-1

按照你的选课步骤从第2行开始顺序填写excel表格的执行步骤

此时,保存excel表格

第三步

我们打开需要进行操作的选课网页

我们在cmd下切换到脚本所在目录

# 切换到D盘
D:
# 切换到xx文件夹
cd xx
python auto_get_lesson_pic_recognize.py

根据提示执行即可

上图示例

3.auto_get_lesson_pic_recognize功能介绍

(1).抢课一次

注意

  • 截图时请随机应变,匹配到图像后,鼠标自动点击图像正中央,建议配合qq截图,ctrl+a/t+a,选取一个独一无二的标记在截图中并且将所要点击的点放在qq截图四个蓝点的中央

  • 如果遇到同一画面中需要点击的图标存在多个一样的,没有特征参照物,可以在那一步设置等待若干秒,手动点击图标
  • 若未成功识别图片,将循环执行识别操作;手动点击图标成功,excel表格中中的指令也会跳到下一条
  • 考虑到网络延迟问题,建议合理利用等待功能

(2).蹲点捡漏

  • 在抢课一次的基础上套了一层死循环
  • 巧妙利用f5、左键单击(循环直到找到图片为止)、左键单击(无需找到图片),可以24h挂机实现蹲点捡漏
  • 请发挥你的聪明才智,正确截图

4.坐标版本(不建议使用)

坐标版本位于coordinate_version目录下

如果能够确切知道所点击的位置的坐标,可以选用坐标版本

配合qq截图,你能够轻松知道你的鼠标在1920×1080分辨率下在屏幕上的坐标(以像素为单位)

顺序排列单击位置的坐标,实现抢课

excel表格中根据提示填写坐标、操作

5.代码

import pyautogui
import time
import xlrd
import pyperclip# 定义鼠标事件
# duration类似于移动时间或移动速度,省略后则是瞬间移动到指定的位置
def Mouse(click_times, img_name, retry_times):if retry_times == 1:location = pyautogui.locateCenterOnScreen(img_name, confidence=0.9)if location is not None:pyautogui.click(location.x, location.y, clicks=click_times, duration=0.2, interval=0.2)elif retry_times == -1:while True:location = pyautogui.locateCenterOnScreen(img_name,confidence=0.9)if location is not None:pyautogui.click(location.x, location.y, clicks=click_times, duration=0.2, interval=0.2)elif retry_times > 1:i = 1while i < retry_times + 1:location = pyautogui.locateCenterOnScreen(img_name,confidence=0.9)if location is not None:pyautogui.click(location.x, location.y, clicks=click_times, duration=0.2, interval=0.2)print("重复{}第{}次".format(img_name, i))i = i + 1# cell_value     1.0:左键单击
#                2.0:输入字符串
#                3.0:等待
#                4.0:热键# 任务一:进行一轮抢课
def WorkFunction1(sheet):i = 1while i < sheet.nrows:# 取excel表格中第i行操作cmd_type = sheet.cell_value(i, 1)# 1:左键单击if cmd_type == 1.0:# 获取图片名称img_name = sheet.cell_value(i, 2)retry_times = 1if sheet.cell_type(i, 3) == 2 and sheet.cell_value(i, 3) != 0:retry_times = sheet.cell_value(i, 3)Mouse(1, img_name, retry_times)print("单击左键:{}  Done".format(img_name))# 2:输入字符串elif cmd_type == 2.0:string = sheet.cell_value(i, 2)pyperclip.copy(string)pyautogui.hotkey('ctrl','v')print("输入字符串:{}  Done".format(string))# 3:等待elif cmd_type == 3.0:wait_time = sheet.cell_value(i, 2)time.sleep(wait_time)print("等待 {} 秒  Done".format(wait_time))# 4:键盘热键elif cmd_type == 4.0:hotkey = sheet.cell_value(i, 2)# 防止刷新过快停留在原网页time.sleep(1)pyautogui.hotkey(hotkey)print("按下 {}  Done".format(hotkey))time.sleep(1)i = i + 1# 任务二:蹲点等人退课
def WorkFunction2(sheet) :while True:WorkFunction1(sheet)time.sleep(2)if __name__ == '__main__':start_time = time.time()file = "info.xlsx"# 打开文件xr = xlrd.open_workbook(filename=file)# 通过索引顺序获取表单sheet = xr.sheet_by_index(0)print("------欢迎使用自动抢课脚本------")print("---------@danteking---------")print("1.抢课一次")print("2.蹲点等人退课后抢指定课")choice = input(">>")start_time = time.time()if choice == "1":WorkFunction1(sheet)elif choice == "2":WorkFunction2(sheet)else:print("非法输入,退出")end_time = time.time()time_consume = end_time - start_timetime_consume = ('%.2f' % time_consume)print("耗时 {} 秒".format(time_consume))

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

Python资料、技术、课程、解答、咨询也可以直接点击下面名片,添加官方客服斯琪

亲测可用,利用Python实现自动抢课脚本相关推荐

  1. python资源论坛_五个亲测可用的Python论坛类网站开源框架

    1.LBForum LBForum是用django开发的论坛系统,LBForum主要注重部署的方便性和易用性,功能方面目前还比较简单. LBForum的开发尽量遵照Django可复用app原则,因此即 ...

  2. (亲测可用)Python 进行图像的多种格式批量转换:.tiff,.jpg,.png

    这里 A格式转B格式. 为什么不能用PIL 读取tiff图像呢. PIL支持单通道及多通道Uint8 TIFF图像读取,读取单通道Uint16 TIFF图像转为Uint8处理,直接读取Uint16 T ...

  3. 超级简单的自动刷新_支付宝自动收取能量、偷能量、超级简单教程,荣耀V20亲测可用...

    关键信息 作者:狐仙小妲己 教程地址:https://m.lizhiweike.com/channel2/887975 源码地址:https://github.com/Xiao-DaJi/alipay ...

  4. dos批处理脚本自动添加网络IP打印机-简单亲测可用

    dos批处理脚本自动添加网络IP打印机-简单亲测可用 前言: 网上找的批处理添加方法复杂且需要导入注册表. 花了一天时间研究出来的简单.快速的批处理命令. win10亲测可用. 核心代码: 1. 添加 ...

  5. YDOOK: Sanic: Python request post请求 上传照片或文件 详细具体步骤 亲测可用!

    YDOOK: Sanic: Python request post请求 上传照片或文件 详细具体步骤 亲测可用! ©YDOOK JYLin 1. 项目目录架构: Upload result: 上传结果 ...

  6. WordPress彻底禁用上传媒体图片自动生成缩略图及多尺寸图片(亲测可用)

    WordPress默认上传图片的时候会自动生成缩略图及多尺寸的图片文件,大部分网站都用不到这些多余的图片,不仅仅占用空间,而且上传的时候还会消耗额外的性能. 下面仅需两段函数代码即可彻底禁用该功能. ...

  7. 谷歌翻译不用代理可用的免费api python版本亲测可用

    上一篇写的最新2022亲测可用的免费google翻译api_金乌爬虫的博客-CSDN博客_免费的翻译api需要使用国外的代理才能使用,那有直接能用的API 答案是绝对,有. 前端时间看了一个 &quo ...

  8. python英文聊天机器人(亲测可用)

    python英文聊天机器人(亲测可用) 本文参考https://www.cnblogs.com/youcong/p/10462924.html 第一步: 下载所需包 pip install aiml ...

  9. 不用再找了,支付宝自动收取能量、自动偷能量、超级简单的系统教程在这里,华为荣耀V20亲测可用

    关键信息 作者:狐仙小妲己 视频教程地址:https://m.lizhiweike.com/lecture2/18061021 源码地址:https://github.com/Xiao-DaJi/al ...

最新文章

  1. C2371 “imaxdiv_t”: 重定义;“_abs64”: 重定义;不同的链接
  2. webpack vue app.js自动注入页面.为app.js增加随机参数
  3. jvm监控工具(排查内存溢出和内存泄漏)
  4. 计算机文档vmware安装虚拟机,教你如何用VMware虚拟机安装系统.docx
  5. implements Serializable
  6. 学编程不如学自动化?
  7. Mac出现启动问题怎么办
  8. CSS 文档架构——便于读取
  9. sessionFactory.getCurrentSession()的引出
  10. ReactNative之Image在Android设置圆角图片变形问题
  11. Vista暴力破解器只是一个玩笑 谁说破解谁撒谎
  12. 使用 URL 读取网络资源
  13. scnaf使用格式化字符串%d接受小数的情况
  14. 高中会考计算机都考啥,高中会考都有哪些科目
  15. Java最牛教材!阿里技术官整合的四大主流中间件笔记
  16. 谁说NTFS不支持UEFI启动的?启动U盘放不了超过4G的文件怎么办?Server2016 Win10 U盘UEFI启动制作方法...
  17. Memcached完整教程
  18. Deblur-NeRF CVPR 2022
  19. 拥抱520,感性去爱,理性成长
  20. 跟着鸟哥学linux【一】

热门文章

  1. 推荐系统与深度学习(一)开端
  2. 【愚公系列】2021年12月 二十三种设计模式(七)-桥接模式(Bridge Pattern)
  3. CURL中的curl_close($ch)、return
  4. 【爬虫 | Python】解决‘Requests Max Retries Exceeded With Url‘报错的问题
  5. css种:link和:visited失效问题
  6. 全国产品经理职位统计20170512
  7. 第7期:内卷和躺平,你怎么选
  8. js使用a标签下载,接口获取二进制文件
  9. 战疫杯--奇奇怪怪的形状
  10. .Net Core基础之读取配置文件