Python更新

作者:视觉牛马

版本 1.0.0


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浏览器实例。
  • 设置目标网址
    • 指定了要访问的网页URL。
  • 指定下载目录
    • 设置了保存音乐文件的目录,并确保该目录存在。
  • 导航到目标网址
    • 通过调用driver.get(url)方法让浏览器加载指定的网页。
  • 等待页面加载
    • 使用WebDriverWait配合expected_conditions来等待直到页面主体元素加载完成,这里设置的超时时间是20秒。
  • 保存网页源代码
    • 将当前页面的HTML源代码保存到本地文件中,便于后续处理或调试。
  • 从网页源代码中提取音乐文件链接
    • 读取之前保存的HTML源代码文件。
    • 使用正则表达式匹配所有的.mp3文件链接。
  • 下载音乐文件
    • 遍历所有找到的音乐链接,使用requests库发起GET请求获取音乐文件。
    • 如果请求成功(状态码为200),则将音乐数据写入本地文件。
    • 文件名根据链接顺序命名,格式为music_{i}.mp3,其中{i}是链接索引。
  • 关闭浏览器
    • 执行完毕后,关闭浏览器实例释放资源。

这段脚本非常适合用来自动下载网页上提供的音乐文件,但需要注意的是,这种做法可能违反某些网站的服务条款,因此在使用前请确保你有合法的权利这样做。此外,由于网络环境、服务器响应等因素,实际运行时可能会遇到各种问题,例如链接失效、服务器拒绝连接等。