利用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 相关文章推荐
pyqt5简介及安装方法介绍
Jan 31 Python
python opencv之SIFT算法示例
Feb 24 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
Django如何自定义分页
Sep 25 Python
python 划分数据集为训练集和测试集的方法
Dec 11 Python
在matplotlib的图中设置中文标签的方法
Dec 13 Python
python实现桌面壁纸切换功能
Jan 21 Python
Django数据库类库MySQLdb使用详解
Apr 28 Python
python腾讯语音合成实现过程解析
Aug 01 Python
python3连接kafka模块pykafka生产者简单封装代码
Dec 23 Python
pycharm中import呈现灰色原因的解决方法
Mar 04 Python
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
Apr 20 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
PHP4之COOKIE支持详解
2006/10/09 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
2014/02/13 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
Javascript在IE或Firefox下获取鼠标位置的代码
2009/12/18 Javascript
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
2012/02/27 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
js截取中英文字符串、标点符号无乱码示例解读
2014/04/17 Javascript
一个JavaScript操作元素定位元素的实例
2014/10/29 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
2015/02/04 Javascript
js实现缓冲运动效果的方法
2015/04/10 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
2016/01/20 Javascript
Javascript的this用法
2017/01/16 Javascript
js使用原型对象(prototype)需要注意的地方
2017/08/28 Javascript
vue + typescript + 极验登录验证的实现方法
2019/06/27 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
这样回答继承可能面试官更满意
2019/12/10 Javascript
如何实现iframe父子传参通信
2020/02/05 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
Python编程中的异常处理教程
2015/08/21 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
python文件处理fileinput使用方法详解
2020/01/02 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
Python实现子类调用父类的初始化实例
2020/03/12 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
HTML5无刷新改变当前url的代码
2017/03/15 HTML / CSS
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
英国在线玫瑰专家:InterRose
2019/12/01 全球购物
财务经理的岗位职责
2013/12/17 职场文书
安全生产检查通报
2014/01/29 职场文书
超市创业计划书
2014/09/15 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
教学质量月活动总结
2015/05/11 职场文书