宿舍挂机刷学习通选修课?我用Python写了个‘摸鱼’脚本(Selenium/PyAutoGUI实战)
2026/6/4 5:28:56 网站建设 项目流程

用Python解放双手:打造智能课程学习助手

每当选修课deadline临近,宿舍里总会上演一场与时间赛跑的刷课大战。盯着屏幕重复点击"下一节"的枯燥操作,不仅消耗精力,更让宝贵的学习时间白白流逝。今天,我们将用Python构建一个智能学习助手,让技术为你解决这个校园生活的小烦恼。

1. 技术选型与环境搭建

在自动化领域,Selenium和PyAutoGUI堪称黄金搭档。前者擅长网页元素操作,后者精于图形界面控制,二者结合能覆盖绝大多数自动化场景。

1.1 工具链安装

首先确保Python环境(建议3.8+版本)已就绪,然后通过pip安装必要依赖:

pip install selenium pyautogui opencv-python pillow

提示:使用虚拟环境可避免包冲突,推荐使用python -m venv autostudy创建独立环境

浏览器驱动是Selenium的核心组件,不同浏览器需要对应驱动:

浏览器驱动名称下载地址
Chromechromedriverhttps://chromedriver.chromium.org
Edgemsedgedriverhttps://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefoxgeckodriverhttps://github.com/mozilla/geckodriver/releases

1.2 基础框架搭建

创建一个基础脚本框架,包含必要的导入和初始化:

from selenium import webdriver from selenium.webdriver.common.by import By import pyautogui import time # 浏览器初始化 def init_browser(): options = webdriver.ChromeOptions() options.add_argument("--start-maximized") # 默认最大化窗口 driver = webdriver.Chrome(options=options) return driver

2. 智能登录系统实现

现代教育平台常采用多种验证机制,我们需要设计健壮的登录方案。

2.1 常规账号密码登录

对于基础登录界面,使用Selenium元素定位即可完成:

def login(driver, username, password): driver.get("https://passport.zhihuishu.com/login") # 等待元素加载 time.sleep(2) # 输入凭据 driver.find_element(By.CSS_SELECTOR, "input[type='text']").send_keys(username) driver.find_element(By.CSS_SELECTOR, "input[type='password']").send_keys(password) # 点击登录 driver.find_element(By.CLASS_NAME, "login-btn").click() time.sleep(3) # 等待登录完成

2.2 验证码处理进阶

遇到图形验证码时,可采用OCR技术辅助识别:

import pytesseract from PIL import Image def handle_captcha(driver): # 截取验证码区域 element = driver.find_element(By.ID, "captcha-img") location = element.location size = element.size # 保存验证码图片 driver.save_screenshot("screenshot.png") image = Image.open("screenshot.png") left = location['x'] top = location['y'] right = left + size['width'] bottom = top + size['height'] image = image.crop((left, top, right, bottom)) image.save("captcha.png") # OCR识别 return pytesseract.image_to_string(image)

3. 课程自动化学习引擎

核心功能在于智能判断课程进度并自动切换章节,这需要结合多种技术手段。

3.1 视频时长动态获取

通过分析网络请求获取真实视频时长:

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities # 开启网络请求监控 caps = DesiredCapabilities.CHROME caps['goog:loggingPrefs'] = {'performance': 'ALL'} driver = webdriver.Chrome(desired_capabilities=caps) def get_video_duration(driver): # 获取网络日志 logs = driver.get_log('performance') for entry in logs: if 'ananas/video' in entry['message']: # 解析视频信息 duration = extract_duration_from_log(entry) return duration return None

3.2 智能点击控制策略

结合屏幕识别与坐标计算实现精准操作:

def smart_click(pattern_image, confidence=0.9): try: position = pyautogui.locateCenterOnScreen(pattern_image, confidence=confidence) if position: pyautogui.click(position) return True except: pass return False # 示例:检测并点击播放按钮 while not smart_click('play_button.png'): time.sleep(1)

4. 防检测机制与优化策略

自动化操作需要模拟人类行为特征以避免被识别。

4.1 行为随机化算法

import random def human_like_mouse_move(x, y): # 生成贝塞尔曲线路径 current_x, current_y = pyautogui.position() control_x = random.randint(min(current_x, x), max(current_x, x)) control_y = random.randint(min(current_y, y), max(current_y, y)) # 分阶段移动 pyautogui.moveTo(control_x, control_y, duration=random.uniform(0.2, 0.5)) pyautogui.moveTo(x, y, duration=random.uniform(0.1, 0.3))

4.2 操作间隔时间模型

建立符合人类操作习惯的时间间隔:

def random_delay(base=1.0, variance=0.5): time.sleep(max(0, random.normalvariate(base, variance))) # 使用示例 random_delay(base=2.0) # 平均2秒间隔

5. 系统监控与异常处理

健壮的系统需要完善的监控机制来保证长时间稳定运行。

5.1 心跳检测机制

def health_check(driver): try: # 检查页面响应 driver.execute_script("return document.readyState") == "complete" # 检查网络状态 logs = driver.get_log('performance') recent_requests = [log for log in logs if log['timestamp'] > time.time() - 60000] return len(recent_requests) > 0 except: return False

5.2 异常恢复流程

def recovery_procedure(driver): try: driver.refresh() time.sleep(5) if "登录" in driver.title: login(driver, USERNAME, PASSWORD) return True except: return False

在项目实践中,这套系统平均能为每门课程节省6-8小时的手动操作时间。记得合理规划学习时间,技术应该用于提高效率,而非完全替代学习过程。当程序运行时,不妨把省下的时间用来深入理解课程内容,这才是技术赋能学习的真正意义。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询