利用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中的对象与类型
Dec 11 Python
Python基于二分查找实现求整数平方根的方法
May 12 Python
python 利用for循环 保存多个图像或者文件的实例
Nov 09 Python
pygame游戏之旅 python和pygame安装教程
Nov 20 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
Jan 08 Python
Python不同目录间进行模块调用的实现方法
Jan 29 Python
python解压TAR文件至指定文件夹的实例
Jun 10 Python
python 用所有标点符号分隔句子的示例
Jul 15 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
Jul 24 Python
python实现抠图给证件照换背景源码
Aug 20 Python
Python3 JSON编码解码方法详解
Sep 06 Python
Python通过队列来实现进程间通信的示例
Oct 14 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小偷程序)
2014/08/23 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
IE6下JS动态设置图片src地址问题
2010/01/08 Javascript
JQUBar 基于JQUERY的柱状图插件
2010/11/23 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
javascript 中select框触发事件过程的分析
2017/08/01 Javascript
NodeJS实现视频转码的示例代码
2017/11/18 NodeJs
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
vue中tab选项卡的实现思路
2018/11/25 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
layui的select联动实现代码
2019/09/28 Javascript
Python 错误和异常小结
2013/10/09 Python
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
Python实现网站文件的全备份和差异备份
2014/11/30 Python
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
好用的Python编辑器WingIDE的使用经验总结
2016/08/31 Python
使用Python的turtle模块画图的方法
2017/11/15 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
2020/05/26 Python
Python数据可视化实现漏斗图过程图解
2020/07/20 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
python中最小二乘法详细讲解
2021/02/19 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
YesStyle美国/全球:购买亚洲时装、美容化妆品和生活百货
2017/01/16 全球购物
北美领先的牛仔品牌:Buffalo David Bitton
2017/05/22 全球购物
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
韩国演唱会订票网站:StubHub韩国
2019/01/17 全球购物
美国鲜花递送:UrbanStems
2021/01/04 全球购物
学期评语大全
2014/04/30 职场文书
学习型班组申报材料
2014/05/31 职场文书
2015年数学教研组工作总结
2015/05/23 职场文书
2016学习依法治国心得体会
2016/01/15 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书