利用Python脚本实现自动刷网课


Posted in Python onFebruary 03, 2020

人在学校,身不由己。总有一些奇奇怪怪的学习任务,需要我们刷够一定的时长去完成,但这很多都是不太令人感兴趣的文字或是视频,而这些课都有共同的特点就是会间隔一定时间发出弹窗,确认屏幕前的我们是否还在浏览页面。每次靠人工去点击,会严重影响我们做其他正事的效率。

利用Python脚本实现自动刷网课

最近小李也需要刷够一定的学习时长。于是乎,我便找了好兄弟Python来帮忙。下面我们就用Python来实现自动化刷课吧!

说到自动化,Selenium这个浏览器自动化测试框架就派上了用场,整个自动刷课的主角便是它。

网站登录

那么为了实现自动刷课,我们需要先实现网站登录,才能在指定的账号内进行操作。常规的,我们需要在对应的位置,找到网页上对应的元素,并通过程序写入。

利用Python脚本实现自动刷网课

而这里有个相对麻烦的东西,即验证码,而这个验证码是白底黑字,是简单的字母数字形式,自然而然地就想到了Python的OCR库 tesserocr 。

把网站登录界面的验证码图片下载下来,调用 tesserocr 进行识别。输出result 即为读出的字符串序列。

def ocr():
    image=Image.open('captcha.jpg')
    image=image.convert('L')
    threshold=127
    table=[]
    for i in range(256):
      if i<threshold:
        table.append(0)
      else:
        table.append(1) 
    image=image.point(table,'1')
    result=tesserocr.image_to_text(image)
    return result

解决了验证码,我们直接用selenium模拟点击 登录 按钮,便完成了登录过程。

进入课程

我们需要进入的是这个实验室准入页面,完成相关课程的学习。

利用Python脚本实现自动刷网课

在编写代码的过程中一直遇到报错,信息如下:ElementNotInteractableException ,即这个页面元素不能交互。我一度怀疑这个元素是因为 style 里的display属性设置成了none。经过观察发现,这个元素并没有隐藏。

利用Python脚本实现自动刷网课

在面向Google编程中我发现了问题的所在,有大佬总结了这一类错误发生的原因。

利用Python脚本实现自动刷网课

首先查看是否需要切换 iframe, 然后看看是否需要用js的方法来scroll滚动条,接着看看是否需要加等待时间,最后check下这个元素是否是可以点击的。

因为selenium操作页面切换可能没有那么块,sleep延时一下等页面切换了再进行元素的查找。

弹出框处理

问题解决之后我们就来到了课程学习的页面。

利用Python脚本实现自动刷网课

而这个页面每个5分钟就会弹出提醒框,然后暂停课程的学习,因此我们需要利用selenium自动完成关闭提醒框的操作。

利用Python脚本实现自动刷网课

def answer_confirm(self):
    # 每隔5分钟弹出确认窗口
    count=1
    while 1:
      try:
        confirm=self.browser.switch_to_alert()
        print(confirm.text)
        confirm.accept()
        print("您已经完成时长为{}分钟的阅读!".format(count*5))
        count+=1
        time.sleep(300)
      except:
        time.sleep(2)

这样我们的程序就可以操作浏览器并完成一定时长的学习任务啦~

利用Python脚本实现自动刷网课

总结

以上所述是小编给大家介绍的利用Python脚本实现自动刷网课,希望对大家有所帮助!

Python 相关文章推荐
用Python程序抓取网页的HTML信息的一个小实例
May 02 Python
更改Ubuntu默认python版本的两种方法python-&gt; Anaconda
Dec 18 Python
Django中的ajax请求
Oct 19 Python
解决安装pycharm后不能执行python脚本的问题
Jan 19 Python
django框架CSRF防护原理与用法分析
Jul 22 Python
解析python的局部变量和全局变量
Aug 15 Python
django 简单实现登录验证给你
Nov 06 Python
tensorflow 自定义损失函数示例代码
Feb 05 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
Feb 28 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
May 26 Python
python cookie反爬处理的实现
Nov 01 Python
Python3中FuzzyWuzzy库实例用法
Nov 18 Python
tensorflow 限制显存大小的实现
Feb 03 #Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
Feb 03 #Python
tensorflow指定GPU与动态分配GPU memory设置
Feb 03 #Python
TensorFlow内存管理bfc算法实例
Feb 03 #Python
python numpy数组中的复制知识解析
Feb 03 #Python
opencv python Canny边缘提取实现过程解析
Feb 03 #Python
Pycharm debug调试时带参数过程解析
Feb 03 #Python
You might like
Laravel框架源码解析之入口文件原理分析
2020/05/14 PHP
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
2010/09/12 Javascript
js 分页全选或反选标识实现代码
2011/08/09 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
2016/07/05 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
javascript入门之string对象【新手必看】
2016/11/22 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
ajax请求+vue.js渲染+页面加载的示例
2018/02/11 Javascript
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
jquery多级树形下拉菜单的实例代码
2019/07/09 jQuery
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
Python设计模式之享元模式原理与用法实例分析
2019/01/11 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
2019/10/06 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
Python用K-means聚类算法进行客户分群的实现
2020/08/23 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
2020/09/16 Python
CSS3使用transition属性实现过渡效果
2018/04/18 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
2020/05/19 HTML / CSS
泰国王权免税店官方网站:KingPower
2019/03/11 全球购物
建筑工地大门标语
2014/06/18 职场文书
驾驶员安全责任书
2014/07/22 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
群众对十八届四中全会的期盼
2014/10/17 职场文书
大学生个人年度总结范文
2015/02/15 职场文书
nginx内存池源码解析
2021/11/20 Servers