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

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

最近小李也需要刷够一定的学习时长。于是乎,我便找了好兄弟Python来帮忙。下面我们就用Python来实现自动化刷课吧!

说到自动化,Selenium这个浏览器自动化测试框架就派上了用场,整个自动刷课的主角便是它。

网站登录

那么为了实现自动刷课,我们需要先实现网站登录,才能在指定的账号内进行操作。常规的,我们需要在对应的位置,找到网页上对应的元素,并通过程序写入。

而这里有个相对麻烦的东西,即验证码,而这个验证码是白底黑字,是简单的字母数字形式,自然而然地就想到了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模拟点击 登录 按钮,便完成了登录过程。

进入课程

我们需要进入的是这个实验室准入页面,完成相关课程的学习。

在编写代码的过程中一直遇到报错,信息如下:ElementNotInteractableException ,即这个页面元素不能交互。我一度怀疑这个元素是因为 style 里的display属性设置成了none。经过观察发现,这个元素并没有隐藏。

在面向Google编程中我发现了问题的所在,有大佬总结了这一类错误发生的原因。

首先查看是否需要切换 iframe, 然后看看是否需要用js的方法来scroll滚动条,接着看看是否需要加等待时间,最后check下这个元素是否是可以点击的。

因为selenium操作页面切换可能没有那么块,sleep延时一下等页面切换了再进行元素的查找。

弹出框处理

问题解决之后我们就来到了课程学习的页面。

而这个页面每个5分钟就会弹出提醒框,然后暂停课程的学习,因此我们需要利用selenium自动完成关闭提醒框的操作。

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

(0)

相关推荐

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

    人在学校,身不由己.总有一些奇奇怪怪的学习任务,需要我们刷够一定的时长去完成,但这很多都是不太令人感兴趣的文字或是视频,而这些课都有共同的特点就是会间隔一定时间发出弹窗,确认屏幕前的我们是否还在浏览页面.每次靠人工去点击,会严重影响我们做其他正事的效率. 最近小李也需要刷够一定的学习时长.于是乎,我便找了好兄弟Python来帮忙.下面我们就用Python来实现自动化刷课吧! 说到自动化,Selenium这个浏览器自动化测试框架就派上了用场,整个自动刷课的主角便是它. 网站登录 那么为了实现自动刷

  • 如何利用python脚本自动部署k8s

    目录 一.准备 二.编辑脚本 1.k8s.sh 2.k8s_install.py 三.配置ssh免密 四.下载python3和git 五.执行脚本 六.成功 七.总结 一.准备 通过之前在Ubuntu18.04上手动部署过k8s之后,尝试用python脚本进行自动化部署 这次用的是三台centos7的虚拟机,一台作为master执行脚本,两台作为node节点 三台机器都配置好静态IP,可以参考之前的在centos 7中安装配置k8s集群的步骤详解 二.编辑脚本 1.k8s.sh 放在/root下

  • Python+uiautomator2实现自动刷抖音视频功能

    工具准备 Python3.7.7 adb(Android debug bridge) uiautomatorviewer 安装adb 官网地址:https://developer.android.google.cn/studio/command-line/adb 下载好解压后设置环境变量即可 安装uiautomatorviewer 参照此篇文章:https://www.cnblogs.com/corsacsherry/p/10609339.html 调试工具 手机通过USB连接到电脑上开启开发者

  • 利用Python实现网站自动签到

    目录 前情提要 准备工作 代码及讲解 小结 前情提要 小五收藏了一些论坛网站,经常需要自己登录签到,以此来获得积分金币等等. 步骤倒是并不复杂,只需要填写账号密码登录,然后点击签到即可. 但天天手动太容易忘了这件事啦.毕竟我们都会用python了,那就可以使用Selenium操作:浏览器实现自动签到啊! 现在开始上手工作 准备工作 首先我们需要先安装Selenium,从而实现后续自动化操控浏览器.我们可以利用它来模拟鼠标按键,跟按键精灵很类似. pip install selenium 待其安装

  • 用python脚本24小时刷浏览器的访问量方法

    如下所示: # -*- coding=utf-8 -*- import urllib2 import socket import time urls = raw_input("Please enter a web address: \n> ") print "\nAccess web page start..." brushNum = 3600 for i in range(brushNum): url = urls socket.setdefaulttime

  • 利用python Selenium实现自动登陆京东签到领金币功能

    如何自动登陆京东? 我们先来看一下京东的登陆页面,如下图所示: [插入图片,登陆页面] 登陆框就是右面这一个框框了,但是目前我们遇到一个困呐,默认的登陆方式是扫码登陆,如果我们想要以用户民个.密码的形式登陆,就要切换一下. 我们看一下这两种登陆方式是如何切换的,通过浏览器的元素检查,我们看一下两个标签. [插入图片,两种登陆方式] 扫码登陆和用户登陆分别在一个div标签里面,我们可以通过css选择器选定用户登陆,使其下面的a标签的class为checked,接下来的一切就比较简单了. 我们要获取

  • 利用Python脚本批量生成SQL语句

    通过Python脚本批量生成插入数据的SQL语句 原始SQL语句: INSERT INTO system_user (id, login_name, name, password, salt, code, createtime, email, main_org, positions, status, used, url, invalid, millis, id_card, phone_no, past, end_date, start_date) VALUES ('6', 'db', 'db',

  • Python脚本实现自动登录校园网

    Python自动化脚本登录校园网 所需工具:python编译环境(博主使用的pycharm作演示,其实在cmd也可以操作!) selenium自动化脚本 .bat批处理文件 第一步,通过pycharm创建一个项目 点击左上角file,然后new project 2.创建项目 3.然后右键项目名创建py文件 4.在pycharm中调用cmd,(在左下角的terminal就是了),再通过cd命令进入到Scripts文件下,Scripts是自己的python编译器文件夹下的目录 5.下载seleniu

  • 利用Python脚本写端口扫描器socket,python-nmap

    目录 Socket模块编写 扫描给定主机是否开放了指定的端口 python-nmap模块编写 扫描给定ip或给定网段内指定端口是否开放 前言: 一个用python写的简单的端口扫描器,python环境为 3.7.0,windows系统 Socket模块编写 扫描给定主机是否开放了指定的端口 TCP连接扫描是利用TCP的三次握手来确定主机的端口是否开放.确定主机端口开放之后,给端口发送消息,接收端口返回的消息,然后判断该端口运行的服务. 使用时,-H 参数可以提供主机的域名或者ip地址,-p/-P

  • 利用python脚本提取Abaqus场输出数据的代码

    笔者为科研界最后的摆烂王,目前利用python代码对Abaqus进行二次开发尚在学习中.欢迎各位摆烂的仁人志士们和我一起摆烂!ps:搞什么科研,如果不是被逼无奈,谁要搞科研! 该代码是学习过程中,对前人已有工作所做的稍加修改.为什么是稍加修改,是因为原代码跑不出来!!笔者在提取场输出的位移数据时,渴望偷懒,打算百度一下草草了事,奈何发现网上代码多半驴头不对马嘴,笔者明明是想提取位移,而不是节点和单元的集合!!所以被逼无奈之下,只好硬着头皮修改!欢迎各位大佬们把小弟代码更优化,然后也发给小弟,让小

随机推荐