BrosTK.py 介绍
BrosTK使用Selenium库来自动化Microsoft Edge浏览器,以实现登录学习通(超星学习通)平台并访问特定课程页面的功能。它还尝试点击页面上的直播元素。以下是代码的详细解释:
- 导入必要的模块:
- selenium相关模块用于控制浏览器。
- time模块用于暂停程序执行。
- 配置WebDriver:
- 定义了Edge浏览器和其驱动程序msedgedriver的路径。
- 创建了一个EdgeService对象,指定了驱动程序的位置。
- 创建了一个EdgeOptions对象,并设置了浏览器的二进制位置(即Edge浏览器的安装路径)。
- 初始化了一个Edge浏览器实例。
- 用户名和密码:
- 导航到登录页面:
- 使用driver.get()方法打开学习通的登录页面。
- 等待页面加载:
- 使用WebDriverWait配合expected_conditions等待页面主体元素加载完成,确保页面已完全加载。
- 输入用户名:
- 使用WebDriverWait等待用户名输入框出现,并输入用户名。
- 输入密码:
- 使用WebDriverWait等待密码输入框出现,并输入密码。
- 点击登录按钮:
- 使用WebDriverWait等待登录按钮出现,并模拟点击操作。
- 等待登录成功:
- 使用WebDriverWait等待URL包含特定字符串,确认登录成功。如果登录失败,则打印当前页面的HTML源码以便调试。
- 导航到课程页面:
- 使用driver.get()方法打开指定的课程页面。
- 等待课程页面加载:
- 使用WebDriverWait等待页面主体元素加载完成,确保课程页面已完全加载。
- 查找并点击直播元素:
- 使用WebDriverWait等待直播元素出现,并模拟点击操作。这里使用了XPath选择器来定位直播元素。
- 保持浏览器打开一段时间:
- 使用time.sleep(60)让浏览器保持打开状态60秒,以便观察操作结果。
- 关闭浏览器:
- 使用driver.quit()关闭浏览器并释放资源。
代码的主要功能:
- 登录学习通平台:自动输入用户名和密码,点击登录按钮。
- 导航到课程页面:登录后,自动导航到指定的课程页面。
- 点击直播元素:在课程页面上查找并点击直播元素。
注意事项:
- 安全性:将用户名和密码硬编码在脚本中存在安全风险。建议使用环境变量或配置文件来存储敏感信息。
- 稳定性:由于网页结构可能发生变化,需要定期检查和更新选择器。
- 合法性:确保你有权进行这些自动化操作,遵守网站的服务条款。
Music.py 介绍
Music使用了Selenium库来自动化Microsoft Edge浏览器,以访问一个特定的网页并下载该网页上的音乐文件。以下是对代码各部分功能的详细解释:
- 导入必要的模块:
- selenium相关模块用于控制浏览器。
- os模块用于操作系统相关的操作,比如创建目录。
- requests模块用于发送HTTP请求。
- re模块用于正则表达式匹配。
- 配置WebDriver:
- 定义了Edge浏览器和其驱动程序msedgedriver的路径。
- 创建了一个EdgeService对象,它指定了驱动程序的位置。
- 创建了一个EdgeOptions对象,并设置了浏览器的二进制位置(即Edge浏览器的安装路径)。
- 添加了一个忽略SSL证书错误的选项,这对于某些网站是必要的,特别是那些使用自签名证书的网站。
- 初始化webdriver.Edge:
- 使用上述服务和服务选项创建了一个Edge浏览器实例。
- 设置目标网址:
- 指定下载目录:
- 导航到目标网址:
- 通过调用driver.get(url)方法让浏览器加载指定的网页。
- 等待页面加载:
- 使用WebDriverWait配合expected_conditions来等待直到页面主体元素加载完成,这里设置的超时时间是20秒。
- 保存网页源代码:
- 将当前页面的HTML源代码保存到本地文件中,便于后续处理或调试。
- 从网页源代码中提取音乐文件链接:
- 读取之前保存的HTML源代码文件。
- 使用正则表达式匹配所有的.mp3文件链接。
- 下载音乐文件:
- 遍历所有找到的音乐链接,使用requests库发起GET请求获取音乐文件。
- 如果请求成功(状态码为200),则将音乐数据写入本地文件。
- 文件名根据链接顺序命名,格式为music_{i}.mp3,其中{i}是链接索引。
- 关闭浏览器:
这段脚本非常适合用来自动下载网页上提供的音乐文件,但需要注意的是,这种做法可能违反某些网站的服务条款,因此在使用前请确保你有合法的权利这样做。此外,由于网络环境、服务器响应等因素,实际运行时可能会遇到各种问题,例如链接失效、服务器拒绝连接等。