Python对腾讯课程视频链接自动化抓取

近期看到腾讯课堂停服的通知,心痛之余,想到啊,我还有很多课程没看完,就剩下两个月的事件,我也来不及看完了。怎么办?

索性,我研究下,怎么把视频保存下来。

接下来请听我分析。

所用技术

Python、Selenium

技术方案

简单来说,通过Selenium打开浏览器,通过课程视频播放详情页的链接,获取整个课程的标题和视频链接。

难点

腾讯课堂的视频不是mp4直接播放的,是m3u8地址。这就意味着,不能通过dom src的js方式简单获取,但通过代码接口逆向过于耗费时间和经历。

使用前,应该先通过测试监听的方式,启动浏览器

复制代码
C:
cd C:\Program Files\Google\Chrome\Application
chrome.exe --remote-debugging-port=9527 

这里的端口指的是selenium要监听的那个,这里指认了,一会自动化执行的时候才会在这个窗口。这里是必要的,因为腾讯课堂限制必须登录,才能访问页面,所以启动后要先登录。然后才能执行抓取程序。

后面的步骤

  1. 启动监听程序
  2. 抓取课程链接程序
  3. 通过课程链接抓取真正视频链接程序。(这一步是相对难的)

如何找视频真实链接?

我是通过监听Network找到m3u8的地址,逐个视频自动获取m3u8地址,然后存储到本地。

python 复制代码
opt = ChromeOptions()
opt.add_experimental_option("debuggerAddress", "127.0.0.1:9527")  # 指定端口为9527,要和启动时调试端口一样
# 通过option参数,设置浏览器不关闭
  caps = {
    "browserName": "chrome",
    'goog:loggingPrefs': {'performance': 'ALL'}  # 开启日志性能监听
  }
  # 将caps添加到options中
  for key, value in caps.items():
    opt.set_capability(key, value)

webdriver.Chrome(options=opt)
performance_log = driver.get_log('performance')
# performance_log 通过这里获取真实的m3u8地址

最后通过下载工具下载

我使用的是N_m3u8DL。

通过执行命令

cmd 复制代码
.\N_m3u8DL-CLI_v3.0.2 "下载地址uri" --workDir "下载后保存的位置" --saveName "下载后要保存的文件名" 

可以通过python执行

python 复制代码
import os
os.system("") # 在此执行命令

也可以保存到一个文件,把所有的下载命令,通过python直接执行那个脚本。

最后:欢迎各位点评,如果想要源码,可以与我联系。

相关推荐
瓦学妹21 分钟前
什么是网络索引?它是如何工作的?
大数据·网络·python·网络爬虫
天天爱吃肉821842 分钟前
商用车多体动力学实战笔记|第6篇:动力传动系统(发动机、变速箱、分动器、TCS、LSD限滑差速)
大数据·人工智能·笔记·python·嵌入式硬件·汽车
海盗12341 小时前
微软技术周报 ——2026-08-03
后端·python·microsoft·c#·.netcore
大数据魔法师1 小时前
【最全详解】DuckDB Python 全套 API 语法、参数与实战用法(零基础全覆盖)
python·数据分析
EAIReport2 小时前
工业电气自动化数据治理破局:多Agent大模型赋能全景智能决策
大数据·运维·自动化
MC皮蛋侠客2 小时前
SQLAlchemy 系列(七):高级建模与高效写入——批量 DML、方言与扩展
数据库·python
腾讯蓝鲸智云3 小时前
标杆客户实践提炼:CFlow 版本价值流模板实战指南
运维·服务器·自动化·云计算·devops
Zane19943 小时前
@property 到底是怎么把方法伪装成属性的?一文吃透 property、staticmethod、classmethod
后端·python
qq_316411033 小时前
AI 情感陪伴智能潮玩软硬件一体化开发案例
人工智能·python
奈斯先生Vector3 小时前
把 Midjourney 二次编辑做成生产系统:customId 能力令牌、Action Graph 与 WebUI 精修工作台
数据库·人工智能·架构·aigc·音视频·midjourney