用Python来自动刷智慧树网站的网课
学校最近让看什么网课,智慧树网站的,太无聊了,写个脚本刷下,这里是用Python+selenium实现的,也可以用js脚本,更简单,但是我这里刚好最近在学python,就顺便练习下,说下有几个点,
1.这里为了练习顺便把登陆功能也做了,注意有一个自动联想元素,需要定位并点击它
2.有两个弹窗,只解决了一个,另一个不知为什么定位不到,所以这里需要手动点击一次,
3.视频中间会有问题弹窗出现,不处理弹窗不会继续播放,这里使用循环不断判断能否定位到弹窗,定位到了就对弹窗进行处理,获取网页源代码并定位问题的name,之后定位并随便选择一个答案作答,
4.这里设置了1.5倍速播放,注意需要先控制鼠标移动到播放窗口处,才能定位到速度按钮
5.其实也可以直接启动浏览器之后,自己进行登录操作,然后运行指定代码,
6.注意需要更改代码中的学校,学号,密码为自己的信息
网站的url: http://study.zhihuishu.com/learning/videoList; 具体到个人可能会有一些其他的参数,不过不影响
欢迎交流。。
具体代码如下:
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException, NoSuchFrameException
import time
from selenium.webdriver.common.action_chains import ActionChains
from bs4 import BeautifulSoup if __name__ == '__main__':
print('stART')
url = 'http://study.zhihuishu.com/learning/videoList;jsessionid=075B1012EC3EFA6EB79A19B1FF96EA44;jsessionid=709212495C7D26BCC1F884A2D4EEC2D9?recruitAndCourseId=4b585c5f4252415846425e5150'
browser = webdriver.Chrome()
wait = WebDriverWait(browser, 10)
browser.get(url)
wait.until(EC.element_to_be_clickable((By.LINK_TEXT, '学号'))).click()
wait.until(EC.presence_of_element_located((By.ID, 'quickSearch'))).send_keys('学校名字')
wait.until(EC.presence_of_element_located((By.ID, 'clCode'))).send_keys('学号')
wait.until(EC.presence_of_element_located((By.ID, 'clPassword'))).send_keys('密码')
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#schoolListCode > li:nth-child(2)'))).click()
wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'wall-sub-btn'))).click()
wait.until(EC.presence_of_element_located((By.LINK_TEXT, '确定'))).click()
# 这块手动点下我已统一
flag = 0
i = 1
k = 1
time.sleep(5)
while True:
if k == 1:
print("播放地", i, '个视频')
a = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'videoArea')))
ActionChains(browser).move_to_element(a).perform()
speed = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#vjs_mediaplayer > div.controlsBar > div.speedBox')))
speed.click()
speed_15 = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'speedTab15')))
speed_15.click()
k = 0
while True:
try:
a = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'videoArea')))
ActionChains(browser).move_to_element(a).perform()
isFinsh = (browser.find_element_by_class_name('passTime').get_attribute('style') == 'width: 100%;')
if isFinsh:
break
browser.switch_to.frame('tmDialog_iframe')
print("弹窗出现")
flag = 1
break
except NoSuchFrameException:
pass
if flag == 1: # 关闭弹窗
print("关闭弹窗")
soup = BeautifulSoup(browser.page_source)
name = soup.find(class_='answerOption').input.attrs['name']
a = wait.until(EC.presence_of_element_located((By.NAME, name)))
a.click()
#browser.find_element_by_name('question561294').click()
browser.switch_to.default_content()
browser.find_element_by_link_text('关闭').click()
print("关闭成功")
flag = 0
else: # 播放下一个视频
print("播放完了第", i, '个视频')
i += 1
browser.find_element_by_link_text('下一节').click()
isFinsh = False
k = 1
time.sleep(2)
用Python来自动刷智慧树网站的网课的更多相关文章
- 利用svn自动同步更新到网站服务器 -- 网摘
首先在服务器上安装VisualSVN Server ,根据提示选好安装的路径,一路确定.安装好后运行VisualSVN Server ,在Repositories上点击右键,选择create New ...
- 智慧树刷网课python脚本
0x00 写在前面 疫情期间肯定有很多小伙伴需要上网课,但是有些网课我们感觉十分的鸡肋,自己不感兴趣,又必须要学 所以我写了这个刷网课的小程序,一方面是锻炼自己的爬虫技术,另一方面也给同学们节约宝贵的 ...
- python网课自动刷课程序-------selenium+chromedriver
python的强大之处就在于有许多已经写好的功能库提供,这些库强大且易用,对于写一些有特定功能的小程序十分方便. 现在就用pyhton的selenium+谷歌游览器写一个可以自动刷课的程序,以智慧树上 ...
- CSDN不限积分代下载,知网、万方、sci、IEEE论文代下载,智慧树、超星尔雅刷课
下载内容: 1.CSDN不限积分代下载. 2.知网.万方.sci.IEEE论文代下载. 3.超星尔雅,智慧树刷课. 注:由于本人手抖买一个CSDN会员,想挽回一点损失,所以创立了一个下载群,绝对不是骗 ...
- 网课应该这么刷(油猴Tampermonkey脚本自动刷课)
懒人福利 首先有些人不想学怎么用脚本,满足你们,压缩包解压之后直接登录即可.戳我下载 脚本已经集成好了,登录即可刷课.章节测试还会自动答题呦,正确率高达97%呦. 油猴及脚本安装 油猴的脚本不知可以刷 ...
- 利用python完成大学刷课(从0到完成的思路)
i春秋作家:tllm 原文来自:利用python完成大学刷课(从0到完成的思路) 最近刚刚开学,学校总是有很多让人无语的课要修,还不能不修.然后我想写一个自动修课的脚本.大佬们不要笑我 是边面向百度学 ...
- python通过代理刷网页点击量
python通过代理刷网页点击量 更新异常处理情况 @time 2013-0803 更新循环里计数问题和随机等待时间问题 #!/usr/bin/python #-*- coding:utf-8 -*- ...
- 使用node自动刷房源并发送可入住房源到邮箱
因为住的地方离公司太远,每天上下班都要坐很久的班车,所以最近想搬到公司旁边的皖水公寓住.去问了一下公寓的客服,客服说房源现在没有了,只能等到别人退房,才能在网站上申请到. 如果纯靠手动F5刷新浏览器, ...
- Python-王者荣耀自动刷金币+爬取英雄信息+图片
前提:本文主要功能是 1.用python代刷王者荣耀金币 2.爬取英雄信息 3.爬取王者荣耀图片之类的. (全部免费附加源代码) 思路:第一个功能是在基于去年自动刷跳一跳python代码上面弄的,思路 ...
随机推荐
- SqlBulkCopy批量插入和索引的关系
.net中批量插入基本都用SqlBulkCopy,速度很快,但是这几天发现个问题,2000数据居然15s,百思不得其解.经过大量测试,发现过多的索引和索引碎片会严重影响插入速度,表的数据量大小反而不会 ...
- python 多进程处理图像,充分利用CPU
默认情况下,Python程序使用一个CPU以单个进程运行.不过如果你是在最近几年配置的电脑,通常都是四核处理器,也就是有8个CPU.这就意味着在你苦苦等待Python脚本完成数据处理工作时,你的电脑其 ...
- Asp.Net Core下的开源任务调度平台ScheduleMaster—快速上手
概述 ScheduleMaster是一个开源的分布式任务调度系统,它基于Asp.Net Core平台构建,支持跨平台多节点部署运行. 它的项目主页在这里: https://github.com/hey ...
- springboot2 + grpc + k8s + istio
项目情况说明: ubuntu - 16.04 springboot - 2.2.2.RELEASE mysql - 5.7 mongodb - 4.0.14 redis - 3.0.6 grpc - ...
- feign架构 原理解析
什么是feign? 来自官网的解释:Feign makes writing java http clients easier 在使用feign之前,我们怎么发送请求? 拿okhttp举例: publi ...
- 引用类型(C# 参考)
C# 中有两种类型:引用类型和值类型. 引用类型的变量存储对其数据(对象)的引用,而值类型的变量直接包含其数据. 对于引用类型,两种变量可引用同一对象:因此,对一个变量执行的操作会影响另一个变量所引用 ...
- playbooks框架部署远程主机
进入到ansible和python环境 进入python3.6虚拟环境 #su - deploy #source .py3-a2.5-env/bin/activate 加载ansible 2.5版本 ...
- Python-直接存储类实例作为序列的元素
如果我们需要存储的数据有很多属性,并且存储的数量很多,可选择定义一个类来表示数据类型,而类的实体作为单个的成员进行存储,这样做的好处是可以只存储一个容器,而不需要每次都存储大量的数据,并且可以限制对数 ...
- SpringBoot实现简单的CRUD
CRUD-员工列表 实验要求: 1).RestfulCRUD:CRUD满足Rest风格: URI: /资源名称/资源标识 HTTP请求方式区分对资源CRUD操作 2).实验的请求架构; 3).员工列表 ...
- 小白学Java:内部类
目录 小白学Java:内部类 内部类的分类 成员内部类 局部内部类 静态内部类 匿名内部类 内部类的继承 内部类有啥用 小白学Java:内部类 内部类是封装的一种形式,是定义在类或接口中的类. 内部类 ...