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

news2024/9/28 23:22:53

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

索性,我研究下,怎么把视频保存下来。
请添加图片描述
接下来请听我分析。

所用技术

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地址,然后存储到本地。

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。
通过执行命令

.\N_m3u8DL-CLI_v3.0.2 "下载地址uri" --workDir "下载后保存的位置" --saveName “下载后要保存的文件名” 

可以通过python执行

import os
os.system("") # 在此执行命令

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1980603.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

U盘格式化了怎么恢复数据?教你U盘恢复妙招

U盘作为便携式存储设备,在我们的日常生活和工作中发挥着重要作用。然而,有时由于操作失误或其他原因,我们可能会格式化U盘,从而导致数据丢失。当遭遇这种情况时,很多人会感到焦虑和困惑。不过,幸运的是&…

DeEcoStudio注释改变颜色

第一步:点击文件——>设置 第二步:编辑器——>配色方案 第三步:找到javaScript——>找到Comment——>找到颜色 第四步:颜色

自定义记录日志的注解

自定义记录日志的注解 建日志表实现代码定义注解与表对应的实体类Mapper 和 Service实现自定义注解 使用注解 建日志表 CREATE TABLE system_log (id bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 主键,method_name varchar(255) COLLATE utf8mb4_general_ci NOT NULL CO…

该买 USB 集线器还是 USB 服务器?一文搞懂!

一、引言 当我们遇到USB 设备与电脑的连接问题时,会看到市面上有 USB 集线器和 USB 服务器两种看起来差不多的产品,搞不清楚它们的区别。 接下来给大家详细一下这两种设备,看看它们分别适合什么情况,帮助你做出明智的选择。 二、…

【Material-UI】Autocomplete 组件的局限性(Limitations)详解

文章目录 一、自动完成/自动填充1. 浏览器自动完成的影响2. 自动填充建议 二、iOS VoiceOver三、自定义 ListboxComponent示例代码 四、总结 Material-UI 的 Autocomplete 组件为开发者提供了便捷的自动补全功能,但在实际使用中也有一些需要注意的局限性。本文将详细…

线程 【Linux】

文章目录 线程页表POSIX线程库pthread_create线程等待pthread_join 线程终止pthread_cancelpthread_self 分离线程 线程ID&&进程地址空间布局 线程 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程…

聊聊ChatGLM-6B医疗数据微调

前言 参考了多个医疗大模型,如扁鹊、灵心等,重新思考了下微调的方案以及数据集的格式;基于ChatGLM/其它LLM整合多种微调方法的非官方实现的框架,审视其数据集格式,以及调试效果,进行微调。 最终基于liucon…

通配符/泛域名HTTPS证书怎么申请?

通配符SSL证书允许您为一个主域名下的所有次级子域名提供加密连接,这非常适用于拥有多个子域名的网站。以下是申请通配符SSL证书的一般步骤: 一、选择证书类型: 确定需要何种类型的通配符SSL证书,如DV(域验证&#x…

黑马头条微服务学习day6-kafka及异步通知文章上下架

文章目录 自媒体文章上下架Kafka概述入门案例分区Kafka高可用设计集群发送类型参数详解消费者详解 SpringBoot集成Kafka传递为消息对象文章上下架功能实现 自媒体文章上下架 Kafka概述 入门案例 &#xff08;1&#xff09;创建kafka-demo项目&#xff0c;导入依赖 <depend…

算法 —— 位运算

目录 位运算常用结论 位运算例题 位1的个数 比特位计算 汉明距离 只出现一次的数字 判定字符是否唯一 丢失的数字 两整数之和 消失的两个数字 进制转换 位运算常用结论 想详细了解位运算的内容可以阅读我的这篇博客&#xff1a;应该背下的位运算 以下我只介绍一些位…

61850 MMS源码(二)

上一篇说了怎么下载&#xff0c;编译和运行mms相关的源码&#xff0c;以及如何抓包。这篇尝试对源码做出一些改动&#xff0c;并实际运行一下。 协议内容厚厚一本书&#xff0c;只是大概看了一下&#xff0c;个人比较习惯从代码入手看逻辑处理&#xff0c;从而理解协议。 我发现…

独立摄影师如何找到自己的第一批客户?

声明&#xff1a;此篇为 ai123.cn 原创文章&#xff0c;转载请标明出处链接&#xff1a;独立摄影师如何找到自己的第一批客户&#xff1f; | AI导航 ai123.cn 嘿&#xff0c;摄影师朋友们&#xff01;咱都知道&#xff0c;想增加目标客户可不简单&#xff0c;推广难、竞争大&am…

Jmeter--http信息头管理器的使用(转载)

本文转载自&#xff1a; Jmeter—什么时候需要配置HTTP信息头管理器以及对应的参数如何输入_信息头管理器中的参数怎么调用-CSDN博客 1、抓包查看Request Headers&#xff08;请求头&#xff09;里Content-Type的信息&#xff0c;如下图&#xff1a; Content-Type的格式为&…

ROS2从入门到精通4-6:路径平滑插件开发案例(以B样条曲线平滑为例)

目录 0 专栏介绍1 ROS2路径平滑器介绍2 平滑器插件编写模板2.1 构造平滑器插件类2.2 注册并导出插件2.3 编译与使用插件 3 基于B样条曲线的路径平滑 0 专栏介绍 本专栏旨在通过对ROS2的系统学习&#xff0c;掌握ROS2底层基本分布式原理&#xff0c;并具有机器人建模和应用ROS2…

了解一下这个基质:粘弹性可编码,organoids培养的好帮手

Dynamic matrices with DNA-encoded viscoelasticity for cell and organoid culture是发表于《nature nanotechnology》的一篇文章&#xff0c;介绍了一种基于DNA的动态交联基质DyNAtrix&#xff0c;用于细胞和类器官培养。DyNAtrix由DNA库与超高分子量聚合物自组装形成&#…

联手体系结构专业委员会:“用户态GPU池化技术”术语发布 | CCF术语快线

本期发布术语热词&#xff1a;用户态GPU池化技术&#xff08;User-space GPU Pooling&#xff09;。 用户态GPU池化技术 作者&#xff1a;陈飞&#xff08;趋动科技&#xff09;张伟韬&#xff08;趋动科技&#xff09;李诚&#xff08;中国科学技术大学&#xff09; 开篇导语…

python使用boto3访问S3对象存储并列出百万级文件对象的存储信息

本文提供了在python3环境里使用boto3访问S3对象存储&#xff0c;并列出百万级文件对象的存储信息的示例代码。 一、测试环境 操作系统和python版本如下&#xff1a; [rootlocalhost boto3]# cat /etc/os-release NAME"openEuler" VERSION"22.03 LTS" I…

【实战指南】轻松上手:部署与应用清华智谱GLM大模型

部署一个自己的大模型&#xff0c;没事的时候玩两下&#xff0c;这可能是很多技术同学想做但又迟迟没下手的事情&#xff0c;没下手的原因很可能是成本太高&#xff0c;近万元的RTX3090显卡&#xff0c;想想都肉疼&#xff0c;又或者官方的部署说明过于简单&#xff0c;安装的时…

GreatSQL 8.0.32-26 今日发布

GreatSQL 8.0.32-26 今日发布 版本信息 发布时间&#xff1a;2024年08月05日 版本号&#xff1a;8.0.32-26, Revision a68b3034c3d 下载链接&#xff1a;https://gitee.com/GreatSQL/GreatSQL/releases/tag/GreatSQL-8.0.32-26 用户手册&#xff1a;https://greatsql.cn/docs…

【知识专栏丨python数分实战】天猫订单数据分析及可视化|taobao天猫订单接口

今天这篇文章将给大家介绍天猫订单数据分析及可视化案例。 import pandas as pdimport numpy as npfrom pyecharts.charts import Pie,Bar,Line,Map,Map3D,Funnelfrom pyecharts import options as optsimport matplotlib.pyplot as pltimport warningsimport seaborn as snsfr…