利用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排序方法实例分析
Apr 30 Python
Python中super的用法实例
May 28 Python
如何高效使用Python字典的方法详解
Aug 31 Python
python实现简易版计算器
Jun 22 Python
python 实现判断ip连通性的方法总结
Apr 22 Python
python实现监控某个服务 服务崩溃即发送邮件报告
Jun 21 Python
python中int与str互转方法
Jul 02 Python
Python查找最长不包含重复字符的子字符串算法示例
Feb 13 Python
python实现Virginia无密钥解密
Mar 20 Python
Django框架之DRF 基于mixins来封装的视图详解
Jul 23 Python
Python图像处理库PIL的ImageFilter模块使用介绍
Feb 26 Python
Python IDE环境之 新版Pycharm安装详细教程
Mar 05 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
一个PHP并发访问实例代码
2012/09/06 PHP
PHP数据库操作Helper类完整实例
2016/05/11 PHP
使用Modello编写JavaScript类
2006/12/22 Javascript
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
javascript测试题练习代码
2012/10/10 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
只需五句话搞定JavaScript作用域(经典)
2016/07/26 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
微信小程序制作表格的方法
2019/02/14 Javascript
Vue formData实现图片上传
2019/08/20 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
利用Python实现颜色色值转换的小工具
2016/10/27 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
python属于软件吗
2020/06/18 Python
详解如何修改python中字典的键和值
2020/09/29 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
css3气泡 css3关键帧动画创建的动态通知气泡
2013/02/26 HTML / CSS
CSS3简单实现照片墙
2014/12/12 HTML / CSS
移动端html5判断是否滚动到底部并且下拉加载
2019/11/19 HTML / CSS
Helly Hansen工作服美国官方网上商店:为最恶劣的环境
2019/09/04 全球购物
什么是SQL Server的确定性函数和不确定性函数
2016/08/04 面试题
办理暂住证介绍信
2014/01/11 职场文书
安全教育演讲稿
2014/05/09 职场文书
建筑工地标语
2014/06/18 职场文书
学校教研活动总结
2014/07/02 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript
Java死锁的排查
2022/05/11 Java/Android