大学生一名,实在不想天天看智慧树的课,于是就有了智慧树刷课服务,
不想动手。这里有免费的智慧树刷课服务平台:http://dao.cqrzr.com/
不过刷课都需要一些基础,智慧树刷课,自动 1.5 倍速播放,自动静音,自动切换流畅画质,自动关闭网课中弹题,自动切换下一节、下一章自动点击之前,会随机等待 0 ~ 60 秒,模拟人类 *** 作延迟。
*** 作步骤:
1.复制代码
2.打开 智慧树 网课播放的页面
3按下 F12 打开开发者窗口
4找到 Console 面板
5按下 ctrl+v 贴入代码
6按下 回车
注意:开启脚本后,请始终保持该网页在最前(即拥有焦点),否则,切换课程时有几率出现播放器异常。
转自github,侵删
求个免费的评分
链接:https://pan.baidu.com/s/1xZKunHSpVStzGrIYD3vXDA
提取码:och9
如果有时候不太好用,试试下面这个,功能就一个 自动下一集 ,使用方法一样
链接:https://pan.baidu.com/s/15JWbxDyXX5Q0X_jIKMSCPA
提取码:owx5
另外,你可以用Python刷课。
我用的是谷歌浏览器,[驱动下载地址](http://chromedriver.storage.googleapis.com/index.html)
需要下载跟浏览器对应版本 的。
我用的是:80.0.3987.106
其中登录使用微信登录,因为账号密码方式登录会被检测到,目前不知道怎么解决。可以参考:[selenium爬虫被检测到 该如何破?](selenium爬虫被检测到 该如何破?)
代码已经写了很详细的注释了。这里就不多啰嗦。
已经写了1.3版本,更加方便
修复了不能跳转下一节的问题,
增加获取课程列表
from selenium import webdriverimport timeimport threadingdef login():
# 设置登录连接
url = "https://passport.zhihuishu.com/login?service=https://onlineservice.zhihuishu.com/login/gologin"
# 进入指定链接
driver.get(url)
# 点击微信登录
print("请在30秒内登录。否则将会退出程序。")
try:
driver.find_element_by_class_name("signin-way-shjiaoyu").click()
except:
print("调用微信登录失败")
driver.quit()
for i in range(1, 30, 1):
print("用时:" + str(i))
time.sleep(1)
if(i<30):
try:
driver.find_element_by_xpath("//*[@id='app']/div[1]/div[3]/div[2]/div[2]/div[1]/ul[1]/li[2]/p[1]").get_attribute("textContent")
print("微信登录成功,计时退出")
break
except:
pass
else:
driver.quit()# 获取各种信息class Obtain:
# 获取姓名
def obtain_name(self):
name = driver.find_element_by_xpath("//*[@id='app']/div[1]/div[3]/div[2]/div[2]/div[1]/div[1]/div[1]/p[1]").get_attribute("textContent")
print("嗨! " + name + " 你好。")
# 获取课程数以及课程名
def Course_number(self):
print("获取课程中……")
time.sleep(3)
# 获取几门课程
number = driver.find_element_by_xpath("//*[@id='app']/div[1]/div[3]/div[2]/div[2]/div[1]/ul[1]/li[2]/p[1]").get_attribute("textContent")
print("您一共选择了:" + number + "门课程。")
# 获取课程名称
for i in range(1, int(number)+1):
path = "//*[@id='sharingClassed']/div[2]/ul[" + str(i) + "]/div[1]/dl[1]/dt[1]/div[1]"
Course_name = driver.find_element_by_xpath(path).get_attribute("textContent")
print(str(i) + " " + Course_name)
print("-"*25)
print("\n")# 进入视频页def into(num):
print("进入视频中")
try:
driver.find_element_by_xpath("//*[@id='sharingClassed']/div[2]/ul["+str(num)+"]/div[1]/dl[1]/dt[1]/div[1]").click()
except:
print("进入失败,正在重新进入")
try:
time.sleep(3)
driver.get("https://onlineh5.zhihuishu.com/onlineWeb.html#/studentIndex")
time.sleep(3)
driver.find_element_by_xpath("//*[@id='sharingClassed']/div[2]/ul[" + str(num) + "]/div[1]/dl[1]/dt[1]/div[1]").click()
except:
print("第二次进入失败")
driver.quit()# 关闭课前提示def close():
try:
time.sleep(3)
driver.find_element_by_xpath('/html/body/div[1]/div/div[6]/div/div[1]/button').click()
print("关闭我知道了成功")
except:
pass
# 关闭学前须知
try:
time.sleep(1)
driver.find_element_by_xpath('/html/body/div[1]/div/div[7]/div[2]/div[1]/i').click()
print("关闭学前须知成功")
except:
pass# 设置基础def set():
# 设置画面质量
try:
time.sleep(1)
driver.execute_script('document.querySelector("#vjs_container > div.controlsBar > div.definiBox > div > b.line1bq.switchLine").click()') # 设置流畅
print("设置流畅成功")
except:
print("设置流畅失败")
# 设置倍速
try:
time.sleep(1)
driver.execute_script('document.querySelector("#vjs_container > div.controlsBar > div.speedBox > div > div.speedTab.speedTab10").click()') # 1.25倍
print("设置1.25倍成功")
except:
print("设置1.25倍失败")
# 设置静音
try:
time.sleep(1)
driver.find_element_by_xpath('//*[@id="vjs_container"]/div[10]/div[6]').click()
print("设置静音成功")
except:
print("设置静音失败")# 关闭弹窗def Close_Popup():
print("弹窗检测中")
while(True):
try:
time.sleep(5)
driver.find_element_by_class_name("topic-item").click() # 点击之一个答案
driver.find_element_by_xpath('/html/body/div[1]/div/div[7]/div/div[3]/span/div').click() # 点击关闭
time.sleep(2)
driver.execute_script('document.querySelector("#playButton").click()') # 点击播放
print("关闭弹窗成功")
except:
pass# 跳转下一节def play_next():
print("下一集检测中")
time.sleep(5)
# 总时间
total_time = driver.find_element_by_xpath('//*[@id="vjs_container"]/div[10]/div[4]/span[2]').get_attribute('textContent')
# 章节
chapter = driver.find_element_by_id("lessonOrder").get_attribute('textContent')
print("正在观看:" + chapter + " 本节视频总时长:" + total_time)
while(True):
time.sleep(5)
total_time = driver.find_element_by_xpath('//*[@id="vjs_container"]/div[10]/div[4]/span[2]').get_attribute('textContent')
current_time = driver.find_element_by_xpath('//*[@id="vjs_container"]/div[10]/div[4]/span[1]').get_attribute('textContent')
print(current_time)
if current_time == total_time:
print('本节视频播放完成,正在播放下一节')
try:
driver.execute_script("document.querySelector('#nextBtn').click()") # 当前视频播放结束,点击下一节
time.sleep(3)
set()
except:
print("切换下一节失败,正在重试")
time.sleep(2)
driver.execute_script("document.querySelector('#nextBtn').click()") # 当前视频播放结束,点击下一节if __name__ == '__main__':
print("智慧树自动看课 *** V1.3启动成功")
driver = webdriver.Chrome()
print("浏览器启动")
# 登录
login()
# 创建类实例
obtain = Obtain()
# 调用姓名,课程号
obtain.obtain_name()
obtain.Course_number()
# 输入编号
num = input("请输入序号进行刷课:")
into(num)
# 关闭我知道了
close()
# 设置流畅
set()
# 关闭弹窗
poput = threading.Thread(target=Close_Popup)
# 跳转下一节
next = threading.Thread(target=play_next)
poput.start()
next.start()
代码有bug 有二级标题的时候会保报错
评论列表