知到(智慧树)刷课自动化:使用 Python 和 DrissionPage 自动化刷课

在这篇教程中,我们将利用 Python 和 DrissionPage 府库实现对 知到(智慧树) 平台的自动刷课。DrissionPage 是一个非常适合进行 Web 自动化测试、页面操作和数据抓取的库,它是基于 Selenium 和 Playwright 封装的高效工具。

环境准备

首先,我们需要安装必要的 Python 库。DrissionPage 基于浏览器自动化,所以你需要安装以下依赖:

pip install drission
pip install selenium
pip install webdriver-manager

1. 获取知到(智慧树)登录页面并自动化操作

知到(智慧树)平台是一个在线学习平台,需要用户进行登录才能访问相关课程。我们可以利用 DrissionPage 库自动化登录过程。

2. 编写自动登录脚本

首先,我们需要设置浏览器自动化来模拟登录操作,填写用户名和密码,然后提交表单。

from drission import Drission
from selenium.webdriver.common.by import By
import time

# 初始化 Drission 实例,打开浏览器
drission = Drission()

# 打开知到(智慧树)登录页面
drission.get('https://www.zhihuishu.com/')

# 等待页面加载完毕
time.sleep(3)

# 输入用户名和密码,模拟点击登录按钮
username_input = drission.find_element(By.ID, 'username')
password_input = drission.find_element(By.ID, 'password')
login_button = drission.find_element(By.CLASS_NAME, 'login-btn')

# 填入用户名和密码
username_input.send_keys('your_username')  # 替换为你的用户名
password_input.send_keys('your_password')  # 替换为你的密码

# 点击登录按钮
login_button.click()

# 等待页面加载
time.sleep(5)

# 检查是否登录成功
if drission.find_element(By.CLASS_NAME, 'user-info'):
    print("登录成功")
else:
    print("登录失败")

# 关闭浏览器
drission.quit()

3. 刷课脚本:自动选择并播放课程

成功登录后,我们可以编写脚本来选择并播放特定的课程,以实现刷课目的。

# 打开个人学习页面
drission.get('https://www.zhihuishu.com/student/myStudy')

# 等待页面加载
time.sleep(3)

# 获取所有课程的链接
course_links = drission.find_elements(By.CSS_SELECTOR, '.course-title a')

# 打印所有课程链接
for link in course_links:
    print(link.get_attribute('href'))

# 假设选择第一个课程
first_course = course_links[0]
first_course.click()

# 等待课程页面加载
time.sleep(5)

# 切换到课程播放页面,点击播放按钮
play_button = drission.find_element(By.CSS_SELECTOR, '.vjs-play-control')
play_button.click()

# 等待一段时间,让课程播放
time.sleep(10)

# 暂停课程
pause_button = drission.find_element(By.CSS_SELECTOR, '.vjs-play-control.vjs-paused')
pause_button.click()

print("课程播放完成,自动化刷课结束。")

# 关闭浏览器
drission.quit()

4. 刷课定时任务:让刷课任务自动进行

如果你希望脚本定时运行以达到自动刷课的目的,可以结合 schedule 库设置定时任务。

pip install schedule
import schedule
import time

def job():
    # 执行刷课操作(调用之前的自动刷课函数)
    print("开始执行刷课任务...")
    # 可以在这里调用你的刷课逻辑代码
    # 比如登录、选择课程、播放等

# 每天定时执行刷课任务
schedule.every().day.at("09:00").do(job)  # 每天9点执行刷课任务

while True:
    schedule.run_pending()
    time.sleep(1)

5. 扩展:自动化课程进度记录与存储

如果你希望记录课程播放进度并将数据保存到文件中,可以在播放过程中获取播放进度,并使用 csvjson 存储。

import csv

# 假设获取课程播放进度(模拟)
course_progress = {
    
    
    "course_name": "Python编程入门",
    "progress": "50%",  # 课程进度
    "time": time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())  # 记录时间
}

# 存储到 CSV 文件
with open('course_progress.csv', mode='a', newline='', encoding='utf-8') as file:
    writer = csv.DictWriter(file, fieldnames=course_progress.keys())
    writer.writerow(course_progress)

print("课程进度已保存。")

6. 提示:如何避免被封号

在自动化刷课的过程中,我们需要小心避免账户被封禁。以下是一些防止封号的建议:

  1. 限制爬取速度:避免过于频繁地刷课,适当延时。
  2. 模拟人类行为:不要一开始就加载所有课程,应该随机选择课程并播放。
  3. 避免滥用脚本:适度刷课,不要过度依赖自动化脚本。

总结

通过 DrissionPage 库的强大功能,我们能够轻松实现对知到(智慧树)平台的自动化刷课。主要的步骤包括自动登录、选择课程、播放视频、保存进度等。你还可以根据自己的需求扩展该脚本,例如添加课程选择、自动化签到等功能。

通过定时任务设置和数据存储功能,我们还能够将自动刷课任务定时化并记录课程进度,方便后续的分析和跟踪。希望本篇教程对你在学习自动化爬虫和刷课方面有所帮助。

猜你喜欢

转载自blog.csdn.net/qq_42978535/article/details/144695256
今日推荐