1. 环境准备与基础配置
大家好,我是老张,一个在自动化领域摸爬滚打了十来年的老码农。最近有不少哈工大的学弟学妹来问我,雨课堂的MOOC视频能不能“解放双手”,自动刷完。说实话,这需求太真实了,毕竟谁还没点别的事儿要忙呢?手动一个个点开视频,还得盯着进度条,确实费时费力。今天,我就结合自己踩过的坑和优化经验,跟大家详细聊聊怎么用Python和Selenium,打造一个稳定、高效的哈工大雨课堂自动化观看脚本。
首先,咱们得把“战场”准备好。这个脚本的核心是Python和Selenium,再配合Chrome浏览器。别担心,就算你是编程小白,跟着我的步骤走,也能轻松搞定。
第一步,安装Python。 如果你电脑上还没装Python,直接去官网下载最新稳定版就行。安装时,千万记得勾选“Add Python to PATH”这个选项,这能省去后面手动配置环境变量的大麻烦。安装完成后,打开命令行(Windows是CMD或PowerShell,Mac是终端),输入 python --version,如果能显示版本号,比如“Python 3.11.4”,那就恭喜你,第一步成功了。
第二步,安装Selenium库。 Selenium是我们操控浏览器的“遥控器”。安装它非常简单,只需要一行命令。在刚才的命令行里,输入 pip install selenium 然后回车。pip是Python的包管理工具,一般会随着Python自动安装。如果网络不太好,下载慢,可以试试国内的镜像源,比如加上 -i https://pypi.tuna.tsinghua.edu.cn/simple。
第三步,准备Chrome和Chromedriver。 脚本需要Chrome浏览器来工作,所以确保你安装了Chrome。接下来是关键的一步:下载与你的Chrome浏览器版本完全匹配的Chromedriver。这是Selenium和Chrome浏览器沟通的“桥梁”,版本不对就全乱套了。查看Chrome版本的方法是:打开Chrome,点击右上角三个点 -> 帮助 -> 关于Google Chrome。记住这个版本号,比如“115.0.5790.102”。
然后,我们去下载对应的Chromedriver。国内有个镜像站速度很快:https://npm.taobao.org/mirrors/chromedriver/。在这个页面里,找到和你Chrome主版本号(比如115)一致的文件夹,进去下载对应你操作系统的文件(Windows是chromedriver_win32.zip,Mac是chromedriver_mac64.zip)。下载后解压,你会得到一个 chromedriver.exe(Windows)或 chromedriver(Mac)文件。
这个文件放哪儿? 我强烈推荐一个最不容易出错的方法:直接把它放到你的Python安装目录下,或者放到一个你记得住的固定文件夹里(比如 D:\AutoScript\),然后把这个文件夹的路径添加到系统的环境变量PATH里。具体怎么添加环境变量,网上教程很多,搜“Windows添加环境变量”或“Mac添加PATH”就能找到。这样做的好处是,无论你在哪个目录下运行脚本,系统都能找到这个驱动,避免一堆路径错误。
1.1 项目初始化与配置文件
环境搭好了,咱们来创建项目。新建一个文件夹,比如叫 HIT_Yuketang_Auto。在这个文件夹里,我们首先创建一个至关重要的文件:config.json。这个文件用来告诉脚本,你要刷哪门课。
原始文章里给的配置比较简单,就是一个课程链接。但实际用起来,我们可能需要更灵活的控制。下面是我优化后的 config.json 示例:
[
{
"course_name": "高等数学(上)",
"score_page_url": "https://hit.yuketang.cn/pro/lms/8692P78g7Lk/4412088/score",
"playback_speed": 1.5,
"headless_mode": false,
"implicit_wait": 10
}
]
我来解释一下这几个参数:
course_name: 课程名称,给自己看的备注,方便管理多个课程。score_page_url: 这是最关键的,必须是雨课堂课程的成绩单页面链接,而不是普通的课程主页。只有这个页面才能列出所有待观看的视频任务。playback_speed: 期望的播放倍速。注意,雨课堂网页播放器本身可能对倍速有限制(比如最高2倍),脚本会尝试设置,但不一定所有课程都成功。headless_mode: 无头模式。设置为true时,浏览器会在后台运行,不显示界面,节省资源。但调试时建议设为false,这样你能看到脚本每一步在做什么,方便排查问题。implicit_wait: 隐式等待时间(秒)。这是Selenium的一个智能等待策略,意思是让浏览器在查找页面元素时,如果没立刻找到,会等待最多这么多秒,期间不断重试。这能有效应对网络卡顿或页面加载慢的情况,比用死板的time.sleep强多了。
接下来,我们创建主脚本文件,比如叫 auto_watch.py。先写一个最简单的框架,测试一下环境是否通顺。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import json
import os
# 1. 读取配置
config_path = ‘config.json’
with open(config_path, ‘r’, encoding=‘utf-8’) as f:
config = json.load(f)[0] # 先处理第一个课程配置
# 2. 设置Chromedriver路径(如果已加入PATH,可省略)
# driver_path = ‘你的chromedriver完整路径’
# service = Service(executable_path=driver_path)
# 3. 启动浏览器
options = webdriver.ChromeOptions()
if config.get(‘headless_mode’):
options.add_argument(‘--headless’) # 启用无头模式
options.add_argument(‘--disable-gpu’) # 禁用GPU,在某些系统上更稳定
# 如果chromedriver已在PATH,可以直接用 webdriver.Chrome
try:
# 方式一:使用Service指定路径(如果前面设置了driver_path)
# driver = webdriver.Chrome(service=service, options=options)
# 方式二:依赖PATH环境变量(推荐)
driver = webdriver.Chrome(options=options)
print(“浏览器启动成功!”)
except Exception as e:
p

835

被折叠的 条评论
为什么被折叠?



