当前位置: 首页 > news >正文

基础篇3 浅试Python爬虫爬取视频,m3u8标准的切片视频

浅试Python爬取视频

1.页面分析

  • 使用虾米视频在线解析
  • 使用方式:https://jx.xmflv.cc/?url=目标网站视频链接
  • 例如某艺的视频 原视频链接

解析结果:
在这里插入图片描述

1.1 F12查看页面结构

在这里插入图片描述
我们发现页面内容中什么都没有,video标签中的src路径也不是视频的数据。

1.2 老规矩看网络请求中的过滤的XHR

发现一堆没卵用的数据返回,直到我们看到这个mixed.m3u3结尾的返回结果,及后续高度相似的请求数据
在这里插入图片描述

1.3解析mp2t媒体文件

将上一步中的mp2t媒体文件随机挑选一个下载下来。打开后就是我们的目标视频。ok目的达到。
在这里插入图片描述接下来我们要做的就是将返回的mixed.m3u8解析出来

2.功能实现

2.1 拿到m3u8的文件

#-*- coding:UTF-8 -*-import requests
import os
import sysres = requests.get('https://vip.ffzy-online2.com/20221231/3848_0533f6da/2000k/hls/mixed.m3u8')
m3u8_obj = res.text
print(m3u8_obj)

可以看到打印结果
在这里插入图片描述
到这里我们就需要拿到ts结尾的字符串,然后筛选出以ts结尾的字符串。

2.2 解析m3u8的信息

m3u8 = m3u8_obj.split('\n')
# 匹配*.ts结尾的字符串
rst = [s for s in m3u8 if s.endswith('.ts')]
print(rst)

我们可以看到打印结果
在这里插入图片描述

接下来就需要拼接字符串获取到视频的路径,下载下来之后再进行拼接。

2.3 下载视频

baseurl= 'https://vip.ffzy-online2.com/20221231/3848_0533f6da/2000k/hls/'
# 下载并保存TS分片
for i, url in enumerate(rst):response = requests.get(baseurl+url, stream=True)with open(f'segment{i + 1}.ts', 'wb') as out_file:out_file.write(response.content)

于是我们可以看到
在这里插入图片描述
现在切片视频正确拿到了

  • 可以利用第三方软件进行视频合并
  • 可以先创建一个.MP4格式的文件使用python写入文件的方法进行合并

2.4 合并

# 将下载的视频合并起来
# 拿到文件名
file_names = os.listdir('./video')
# 最终视频路径
target_video = open('./output.mp4','ab')
# 遍历全部视频集合
for file in file_names:with open('./video/'+file,"rb") as f:target_video.write(f.read())f.close()
target_video.close()

我只是下载的部分视频,成功合成看结果:

在这里插入图片描述

3.整合一下

# -*- coding:utf-8 -*-import requests
import os
import sysclass getvideo(object):def __init__(self) -> None:self.baseurl = 'https://vip.ffzy-online2.com/20221231/3848_0533f6da/2000k/hls/'  # ts视频的路径self.m3u8url = 'https://vip.ffzy-online2.com/20221231/3848_0533f6da/2000k/hls/mixed.m3u8' # m3u8文件的路径self.ts_video = [] # 存放解析后的ts视频信息def geturlbyts(self):res = requests.get(self.m3u8url)m3u8_obj = res.text m3u8 = m3u8_obj.split('\n')  # 按照换行分割# 匹配*.ts结尾的字符串self.ts_video = [s for s in m3u8 if s.endswith('.ts')]# 下载并保存TS分片def downloadvideobyts(self):for i, url in enumerate(self.ts_video):response = requests.get(self.baseurl+url, stream=True)with open(f'.\\video\\'+self.ts_video[i], 'wb') as out_file:sys.stdout.write("下载进度:{0:.2f}%" .format(float((i+1)/len(self.ts_video))*100)  + '\r')sys.stdout.flush()out_file.write(response.content)def mergevideo(self):# 将下载的视频合并起来# 拿到文件名file_names = os.listdir('./video')# 最终视频路径target_video = open('./output.mp4','ab')# 遍历全部视频集合for file in file_names:with open('./video/'+file,"rb") as f:print("当前合并到{}".format(file))target_video.write(f.read())f.close()target_video.close()dlvideo = getvideo()
dlvideo.geturlbyts()
# 当前目录创建一个video文件夹 用来存储ts分片视频
# 创建个文件夹存储视频
os.makedirs('video',exist_ok=True)
dlvideo.downloadvideobyts()
dlvideo.mergevideo()
print("合并完成")

单线程着实慢,后续继续更新学习。
在这里插入图片描述
以上仅供学习使用,下载后请于24小时内删除。

相关文章:

基础篇3 浅试Python爬虫爬取视频,m3u8标准的切片视频

浅试Python爬取视频 1.页面分析 使用虾米视频在线解析使用方式:https://jx.xmflv.cc/?url目标网站视频链接例如某艺的视频 原视频链接 解析结果: 1.1 F12查看页面结构 我们发现页面内容中什么都没有,video标签中的src路径也不是视频的数据。 1.2 …...

Adaboost集成学习 | Matlab实现基于BiLSTM-Adaboost双向长短期记忆神经网络结合Adaboost集成学习时间序列预测(股票价格预测)

目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 Matlab实现基于BiLSTM-Adaboost双向长短期记忆神经网络结合Adaboost集成学习时间序列预测(股票价格预测) 模型设计 股票价格预测是一个具有挑战性的时间序列预测问题,可以使用深度学习模型如双向长短期记忆…...

MySQL两表联查之分组成绩第几问题

MySQL 数据库操作实践:两表联查之分组成绩第几问题 在本篇博客中,我将展示MySQL 从创建表、到插入数据,并进行一些复杂的查询操作。 1. 建立表格 首先,我们创建两个表:department(部门)和 em…...

每日一题(leetcode2952):添加硬币最小数量 初识贪心算法

这道题如果整体去思考,情况会比较复杂。因此我们考虑使用贪心算法。 1 我们可以假定一个X,认为[1,X-1]区间的金额都可以取到,不断去扩张X直到大于target。(这里为什么要用[1,X-1]而不是[1,X],总的来说是方便,潜在思想…...

[Errno 2] No such file or directory: ‘g++‘

报错解释: 这个错误表明系统试图访问名为g++的文件或目录,但没有找到。g++是GNU编译器集合(GNU Compiler Collection)中的C++编译器。如果系统中没有安装g++或者g++不在环境变量的路径中,就会出现这个错误。 解决方法: 确认g++是否已安装: 在Linux上,可以尝试运行g+…...

go的通信Channel

一、channel是什么 1.一种通信机制 channel是goroutine与goroutine之间数据通信的一种通信机制。一般都是2个g及以上一起工作。 channel与关键字range和select紧密相关。 二、channel的结构 go源码:GitHub - golang/go: The Go programming language src/runt…...

手写红黑树【数据结构】

手写红黑树【数据结构】 前言版权推荐手写红黑树一、理论知识红黑树的特征增加删除 二、手写代码初始-树结点初始-红黑树初始-遍历初始-判断红黑树是否有效查找增加-1.父为黑,直接插入增加-2. 父叔为红,颜色调换增加-3. 父红叔黑,颜色调换&am…...

[蓝桥杯练习]通电

kruskal做法(加边) #include <bits/stdc.h> using namespace std; int x[10005],y[10005],z[10005];//存储i点的x与y坐标 int bcj[10005];//并查集 struct Edge{//边 int v1,v2; double w; }edge[2000005]; int cmp(Edge a, Edge b){return a.w < b.w;} int find(i…...

安全算法 - 摘要算法

摘要算法是一种将任意长度的数据转换为固定长度字节串的算法。它具有以下特点和应用。 首先&#xff0c;摘要算法能够生成一个唯一且固定长度的摘要值&#xff0c;用于验证数据的完整性和一致性。无论输入数据有多长&#xff0c;生成的摘要值始终是固定长度的&#xff0c;且即…...

操作系统:动静态库

目录 1.动静态库 1.1.如何制作一个库 1.2.静态库的使用和管理 1.3.安装和使用库 1.4.动态库 1.4.1.动态库的实现 1.4.2.动态库与静态库的区别 1.4.3.共享动态库给系统的方法 2.动态链接 2.1.操作系统层面的动态链接 1.动静态库 静态库&#xff08;.a&#xff09;&…...

车载电子电器架构 —— 局部网络管理汇总

车载电子电器架构 —— 局部网络管理汇总 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明…...

网络安全 | 什么是DDoS攻击?

关注WX&#xff1a;CodingTechWork DDoS-介绍 DoS&#xff1a;Denial of Service&#xff0c;拒绝服务。DDoS是通过大规模的网络流量使得正常流量不能访问受害者目标&#xff0c;是一种压垮性的网络攻击&#xff0c;而不是一种入侵手段。NTP网络时间协议&#xff0c;设备需要…...

[Godot] 3D拾取

CollisionObject3D文档 Camera3D文档 CollisionObject3D有个信号_input_event&#xff0c;可以用于处理3D拾取。 Camera3D也有project_position用于将屏幕空间坐标投影到3D空间。 extends Node3D#是否处于选中状态 var selected : bool false #摄像机的前向量 var front : V…...

知识融合:知识图谱构建的关键技术

目录 一、引言二、知识图谱基础2.1 知识表示三元组属性图 2.2 知识抽取实体抽取关系抽取属性抽取 三、知识融合的核心问题3.1 实体识别与链接实体识别实体链接 3.2 重复实体合并方法示例 3.3 关系融合挑战方法示例 四、知识融合技术深度解析4.1 基于规则的方法规则设计原则规则…...

外贸建站:WordPress搭建外贸独立站零基础自建站完整教程(2024)

对于做外贸来说&#xff0c;拥有自己的外贸独立网站真的非常重要。在外贸领域&#xff0c;如今各平台竞争激烈&#xff0c;规则多&#xff0c;成本高&#xff0c;价格战、政策变化快&#xff0c;还存在封店风险等等因素。在这种情况下&#xff0c;拥有外贸独立站就能很好规避上…...

【教程】Kotlin语言学习笔记(五)——Lambda表达式与条件控制

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 【Kotlin语言学习】系列文章 第一章 《认识Kotlin》 第二章 《数据类型》 第三章 《数据容器》 第四章 《方法》 第五章 《L…...

C++的并发世界(三)——线程对象生命周期

0.案例代码 先看下面一个例子&#xff1a; #include <iostream> #include <thread>void ThreadMain() {std::cout << "begin sub thread:" << std::this_thread::get_id()<<std::endl;for (int i 0; i < 10; i){std::cout <&…...

SAD法(附python实现)和Siamese神经网络计算图像的视差图

1 视差图 视差图&#xff1a;以左视图视差图为例&#xff0c;在像素位置p的视差值等于该像素在右图上的匹配点的列坐标减去其在左图上的列坐标 视差图和深度图&#xff1a; z f b d z \frac{fb}{d} zdfb​ 其中 d d d 是视差&#xff0c; f f f 是焦距&#xff0c; b b…...

基于DWT(离散小波变换)的图像加密水印算法,Matlab实现

博主简介&#xff1a; 专注、专一于Matlab图像处理学习、交流&#xff0c;matlab图像代码代做/项目合作可以联系&#xff08;QQ:3249726188&#xff09; 个人主页&#xff1a;Matlab_ImagePro-CSDN博客 原则&#xff1a;代码均由本人编写完成&#xff0c;非中介&#xff0c;提供…...

【威胁情报综述阅读3】Cyber Threat Intelligence Mining for Proactive Cybersecurity Defense

【威胁情报综述阅读1】Cyber Threat Intelligence Mining for Proactive Cybersecurity Defense: A Survey and New Perspectives 写在最前面一、介绍二、网络威胁情报挖掘方法和分类A. 研究方法1&#xff09; 第 1 步 - 网络场景分析&#xff1a;2&#xff09; 第 2 步 - 数据…...

FanControl终极指南:Windows风扇智能控制完全手册

FanControl终极指南&#xff1a;Windows风扇智能控制完全手册 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/Fan…...

Windows 11终极优化指南:一键清理系统臃肿,免费提升51%性能

Windows 11终极优化指南&#xff1a;一键清理系统臃肿&#xff0c;免费提升51%性能 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to …...

Python 爬虫高级实战:异地多机房爬虫协同采集

前言 随着爬虫业务规模扩张&#xff0c;单机、单机房部署模式逐渐暴露出单点故障、IP 池单一、地域访问延迟高、目标站点区域风控封禁、单机房带宽资源瓶颈等一系列问题。单一机房所有爬虫出口 IP 归属同一运营商、同一地域&#xff0c;极易被目标站点基于地域、IP 段整体封禁…...

性价比好的深圳除甲醛公司

深圳作为高密度开发城市&#xff0c;常年保持稳定的新房交付、写字楼翻新与商铺装修需求&#xff0c;装修带来的甲醛残留问题&#xff0c;始终是业主和企业管理者关注的室内安全重点。目前深圳本地已有大量除甲醛服务机构&#xff0c;消费者可根据自身需求筛选适配的服务主体。…...

Proteus仿真新手必看:从电容单位到LCD1602,这份常用元器件清单帮你快速上手

Proteus仿真实战指南&#xff1a;从零搭建你的第一个电子电路 刚接触Proteus的电子爱好者们&#xff0c;面对软件里密密麻麻的元器件库&#xff0c;是不是有种"大海捞针"的感觉&#xff1f;别担心&#xff0c;这份指南将带你快速锁定核心元器件&#xff0c;用最直接的…...

Windows Cleaner终极指南:彻底告别C盘爆红的免费系统优化神器

Windows Cleaner终极指南&#xff1a;彻底告别C盘爆红的免费系统优化神器 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为Windows系统设…...

如何快速解决Visual C++运行库安装问题:终极一站式解决方案指南

如何快速解决Visual C运行库安装问题&#xff1a;终极一站式解决方案指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过应用程序无法启动&…...

FanControl终极指南:3分钟掌握Windows风扇控制神器,告别噪音与高温困扰

FanControl终极指南&#xff1a;3分钟掌握Windows风扇控制神器&#xff0c;告别噪音与高温困扰 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://git…...

[MTCNN]2. 级联卷积神经网络样本工程与偏移量奥秘

1. 为什么样本工程是MTCNN成功的关键 在计算机视觉领域&#xff0c;数据质量往往比算法本身更重要。MTCNN作为经典的人脸检测算法&#xff0c;其成功很大程度上依赖于精心设计的样本工程。我曾在多个实际项目中验证过&#xff0c;同样的网络结构&#xff0c;使用不同质量的训练…...

Postmate部署实战:从开发到生产的完整流程

Postmate部署实战&#xff1a;从开发到生产的完整流程 【免费下载链接】postmate &#x1f4ed; A powerful, simple, promise-based postMessage library. 项目地址: https://gitcode.com/gh_mirrors/po/postmate Postmate是一个强大的、简单的、基于Promise的postMess…...