利用Python脚本实现自动刷网课

作者:librauee 时间:2023-04-20 12:39:16 

人在学校,身不由己。总有一些奇奇怪怪的学习任务,需要我们刷够一定的时长去完成,但这很多都是不太令人感兴趣的文字或是视频,而这些课都有共同的特点就是会间隔一定时间发出弹窗,确认屏幕前的我们是否还在浏览页面。每次靠人工去点击,会严重影响我们做其他正事的效率。

利用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脚本实现自动刷网课,希望对大家有所帮助!

来源:https://segmentfault.com/a/1190000021675928

标签:Python,刷网课,网课
0
投稿

猜你喜欢

  • Ubuntu Server 16.04下mysql8.0安装配置图文教程

    2024-01-21 21:54:37
  • Window.Open详解

    2008-06-08 13:43:00
  • Python可视化神器pyecharts之绘制箱形图

    2021-08-04 03:40:53
  • Python实现批量修改xml文件的脚本

    2022-01-14 06:14:03
  • JavaScript设计模式之原型模式分析【ES5与ES6】

    2024-05-02 16:29:37
  • python 删除excel表格重复行,数据预处理操作

    2023-04-19 06:10:33
  • Gradio机器学习模型快速部署工具应用分享

    2023-06-30 01:33:33
  • MySQL之导出整个及单个表数据的操作

    2024-01-17 00:52:02
  • PHP实现将浏览历史页面网址保存到cookie的方法

    2023-08-16 05:25:29
  • 基于Python写一个番茄钟小工具

    2023-05-02 07:53:37
  • C#如何读取Txt大数据并更新到数据库详解

    2024-01-24 18:51:11
  • 防止删库跑路及高级代码投毒技巧

    2022-03-27 13:20:16
  • JS脚本加载后执行相应回调函数的操作方法

    2024-04-17 10:23:07
  • 怎样在JavaScript里写一个swing把数据插入数据库

    2024-01-20 09:26:42
  • 用Dreamweaver MX实现网站批量更新

    2009-09-13 18:39:00
  • 详解python tkinter模块安装过程

    2021-05-18 04:19:38
  • MySQL查询两个日期之间记录的方法

    2024-01-21 19:47:40
  • PHP连接MSSQL方法汇总

    2023-11-17 19:34:36
  • Mysql中如何删除某个字段的最后四个字符

    2024-01-28 22:44:07
  • 教你用Python下载抖音无水印视频

    2022-11-18 06:08:42
  • asp之家 网络编程 m.aspxhome.com