利用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多线程抓取代理服务器IP地址的示例
Nov 09 Python
python 默认参数问题的陷阱
Feb 29 Python
Python列出一个文件夹及其子目录的所有文件
Jun 30 Python
详解Python实现按任意键继续/退出的功能
Aug 19 Python
Python实现基本数据结构中栈的操作示例
Dec 04 Python
对python 矩阵转置transpose的实例讲解
Apr 17 Python
TensorFlow实现随机训练和批量训练的方法
Apr 28 Python
Python使用googletrans报错的解决方法
Sep 25 Python
套娃式文件夹如何通过Python批量处理
Aug 23 Python
Python Opencv轮廓常用操作代码实例解析
Sep 01 Python
Python列表嵌套常见坑点及解决方案
Sep 30 Python
python 利用 PIL 将数组值转成图片的实现
Apr 12 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 转义使用详解
2013/07/15 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
Symfony生成二维码的方法
2016/02/04 PHP
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
javascript实现Email邮件显示与删除功能
2015/11/21 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
jQuery中选择器的基础使用教程
2016/05/23 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
python读取oracle函数返回值
2016/07/18 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
2018/06/07 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
pymysql模块的操作实例
2019/12/17 Python
Python实现结构体代码实例
2020/02/10 Python
如何理解python面向对象编程
2020/06/01 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
HTML5注册页面示例代码
2014/03/27 HTML / CSS
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
.NET面试问题集
2015/12/08 面试题
教师求职推荐信范文
2013/11/20 职场文书
电脑教师的教学自我评价
2013/11/26 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
公司员工体检通知
2015/04/21 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server