如何M3U8视频切片保存到本地,见过视频被别人拿走了吗?

2024-08-25 18:04

本文主要是介绍如何M3U8视频切片保存到本地,见过视频被别人拿走了吗?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、数据来源分析


    1.明确需求
    网址:https://v.qq.com/x/cover/mzc002006n62s11/e0045s2g2eg.html
    数据:视频
    2.抓包分析
    F12
    刷新网站
    搜索关键字找到对应的数据位置 M3U8
    https://vd6.l.qq.com/proxyhttp


二、代码实现步骤


    发送请求
    获取数据
    解析数据
    保存数据  

三、正常爬取代码

import requests
import re
from pprint import pprint
import jsonheaders = {'accept': '*/*','accept-language': 'zh-CN,zh;q=0.9','content-type': 'text/plain;charset=UTF-8','cookie': 'qq_domain_video_guid_verify=507c92025bbf667c; vversion_name=8.2.95; video_omgid=507c92025bbf667c; _qimei_uuid42=1881811391a10031d240126f353cd310f5cbf9f774; pgv_pvid=1833209344; _qimei_fingerprint=28e27f13e024b4e72ed41740c05847af; _qimei_q36=; _qimei_h38=2db8f8c1d240126f353cd31002000004d18818; o_minduid=fEZEgSlaTS1EadavpD_tVESHLMB8xDIk; appuser=6E4931CCE5CB1885; pgv_info=ssid=s6672934747; LPDFturn=798; LPPBturn=773; LKBturn=898; LPLFturn=175; LPSJturn=904; LBSturn=975; LVINturn=259; LPHLSturn=587; LHTturn=445; Lturn=172; LPVLturn=760; LZTturn=929; LDERturn=900','referer': 'https://v.qq.com/','sec-ch-ua': '"Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"','sec-fetch-dest': 'empty','sec-fetch-mode': 'cors','sec-fetch-site': 'same-site','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
}response = requests.post('https://vd6.l.qq.com/proxyhttp',  headers=headers, data=data)
context = response.json()
voad = context['vinfo']
voaddata = json.loads(voad)
pprint(voaddata)
m3u8_url = voaddata['vl']['vi'][0]['ul']['ui'][-1]['url']
print(m3u8_url)
m3u8 = requests.get(url=m3u8_url, headers=headers).text
# print(m3u8)
ts_list= re.findall(",\n(.*?)\n#",m3u8,re.S)
for ts in ts_list:print(ts)tsbase = 'https://defaultts.tc.qq.com/vipts.tc.qq.com/AF8H7lDpwYdrycx9TJOH7gFbhFzqHlzIaYXsBfV6ujAk/B_efeEBb4uHJ8TOTkZIB0ooo9N3FBiMa0i4vWoGPCx-MBjTgrF9Gkl8W5Wef7bGPCS/svp_50112/_DGlnT9NscaHvtg1cgDcBjlfH5xG2zUzW2NmMUNUtynTPxeoaA7MHYiUuyjty5_8rEA4fNZmxeV0BI4I-oVG76Z6jQAZmEc7f-gBRCo3zh6gBCRuZBAS-cTfa-9KnKAffogGYhcqpJxmlBE2_oWxeI2io5c8KWb0XX8bWB36KEQykgiHkds7KKMoUe6eWuhYM4l6JW-96NpM0gB1AByhKVjypXNwxYqZVsc1uo2kq2_AT6GZ-w0p_Q/'for ts in ts_list:print(ts)ts_url = tsbase + tsprint(ts_url)res1 = requests.get(url=ts_url)with open('./video/第2话.mp4', 'ab') as f:f.write(res1.content)

四、自动化爬取视频

import requests
import re
import time
import tqdm  #进度条
from pprint import pprint
import json
import pandas as pd
"""
一、数据来源分析网址:https://v.qq.com/x/cover/mzc002006n62s11/e0045s2g2eg.htmlhttps://vd6.l.qq.com/proxyhttp
"""
from DrissionPage import ChromiumPage,ChromiumOptions
#chrome:version
co = ChromiumOptions().set_paths(browser_path=r"C:\Users\lenovo\AppData\Local\Google\Chrome\Application\chrome.exe")
page = ChromiumPage(co)
page.listen.start('proxyhttp')
page.get("https://v.qq.com/x/cover/mzc002006n62s11/z0045grsctu.html")
time.sleep(10)res=page.listen.wait()
context=res.response.body
# title = page.ele('class:.txp-next-preview__desc').text
voad = context['vinfo']
voaddata = json.loads(voad)
# pprint(voaddata)
m3u8_url = voaddata['vl']['vi'][0]['ul']['ui'][-1]['url']
tsbase ='/'.join(m3u8_url.split('/')[:-1]) +'/'
# print(m3u8_url)
m3u8 = requests.get(url=m3u8_url).text
print(m3u8)
ts_list= re.findall(",\n(.*?)\n#",m3u8,re.S)
for ts in ts_list:print(ts)ts_url = tsbase+tsprint(ts_url)res1=requests.get(url=ts_url)with open('./video/第1话.mp4','ab') as f:f.write(res1.content)

这篇关于如何M3U8视频切片保存到本地,见过视频被别人拿走了吗?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106269

相关文章

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

Maven项目打包时添加本地Jar包的操作步骤

《Maven项目打包时添加本地Jar包的操作步骤》在Maven项目开发中,我们经常会遇到需要引入本地Jar包的场景,比如使用未发布到中央仓库的第三方库或者处理版本冲突的依赖项,本文将详细介绍如何通过M... 目录一、适用场景说明​二、核心操作命令​1. 命令格式解析​2. 实战案例演示​三、项目配置步骤​1

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o