利用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使用PyGame模块播放声音的方法
May 20 Python
Python常用知识点汇总
May 08 Python
解决Tensorflow安装成功,但在导入时报错的问题
Jun 13 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
Jul 31 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
Dec 12 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
Dec 27 Python
python实现控制台打印的方法
Jan 12 Python
Python将string转换到float的实例方法
Jul 29 Python
PyQt5通信机制 信号与槽详解
Aug 07 Python
利用Python复制文件的9种方法总结
Sep 02 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
Dec 31 Python
如何用python开发Zeroc Ice应用
Jan 29 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中常用编辑器推荐
2007/01/02 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
动态添加删除表格行的js实现代码
2014/02/28 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
详解React 元素渲染
2020/07/07 Javascript
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
学习python处理python编码问题
2011/03/13 Python
Python实现八大排序算法
2016/08/13 Python
python绘制条形图方法代码详解
2017/12/19 Python
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
2018/04/18 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
Python如何实现转换URL详解
2019/07/02 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
宿舍打麻将检讨书
2014/01/24 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
奉献家乡演讲稿
2014/09/16 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
政府会议通知范文
2015/04/15 职场文书
确保工程质量承诺书
2015/04/29 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
如何在python中实现ECDSA你知道吗
2021/11/23 Python
JavaScript ES6的函数拓展
2022/01/18 Javascript