对m3u8视频进行批量采集

news2024/9/28 13:20:30

一、相关网页(网页链接:https://www.acfun.cn/v/ac36564705)

二、多视频采集网页(找出每个视频ID)

三、相关代码(代码含有注释)

# @Time: 2024/1/18 22:57
# @Author: 马龙强
# @File: 对m3u8视频进行批量采集.py
# @software: PyCharm
"""
网址:https://www.acfun.cn/v/ac36564705
数据:视频内容
数据包地址:https://www.acfun.cn/v/ac36564705(视频详情页)

多个视频采集() ——> 多页视频采集
    https://www.acfun.cn/u/29946310
    1.分析请求链接变化规律
        https://www.acfun.cn/v/ac36564705(视频详情页)
    视频ID --> 获取所有视频ID(目录页面获取)

    页面链接:
    https://www.acfun.cn/u/29946310?quickViewId=ac-space-video-list&reqID=14&ajaxpipe=1&type=video&order=newest&page=2&pageSize=20&t=1705649684246
    1.发送请求
    2.获取数据
    3.解析数据

"""
#url = 'https://tx-safety-video.acfun.cn/mediacloud/acfun/acfun_video/c3471e9635d5b851-ea6e7b122d2d54d64693965aed559baa-hls_360p_hevc_1.m3u8?pkey=ABCFUkjmqkt-agD7xyW6wFIm-mYTdxYRB75ZOyemp5aoFUJNm9DAVYVc5nqQkdQP-FJad2s-yd92ypUuPakRanYHaOFpm0aRsJc5D1rx9p9DgNop9FsUtA1MSBDk6vnM8iiRJn_zzu7rgoUmYhh1vpQ5OF_JaTTlEfIiu-KnqY3TERCMWXPB0ar6eP2oIq3RUKhvYz_Hx-_rKfT2FdxKM3B7ThniqMjFLkXFyYYeCocClw&safety_id=AAL1xBzfE8H4NudKAOEFPJXV'
import requests
import json
import re
from pprint import pprint

#模拟浏览器
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}
# page_link = ''
link = 'https://www.acfun.cn/u/29946310?quickViewId=ac-space-video-list&reqID=14&ajaxpipe=1&type=video&order=newest&page=2&pageSize=20&t=1705649684246'
#发送请求获取数据
link_data = requests.get(url=link,headers=headers).text
# print(link_data)
#提取视频ID
video_id_list = re.findall('"atomid.*?":.*?"(\d+).*?"',link_data)
# pprint(link_data)
# print(video_id_list)
for video_id in video_id_list:
    #请求网址
    url = f'https://www.acfun.cn/v/ac{video_id}'
    #发送请求
    response = requests.get(url=url,headers=headers)
    #获取数据
    html_data = response.text

    #打印数据
    #提取标题
    title = re.findall('"title":"(.*?)",',html_data)[1]
    # print(title)
    #提取m3u8 json格式 -> 字符串
    info = re.findall('window.videoInfo =(.*?);',html_data)[0]
    #转成字典 -> 键值对取值(根据冒号左边的内容,提取冒号右边的内容)
    # m3u8 = json.loads(json.loads(info)['currentVideoInfo']['ksPlayJson'])['adaptationSet'][0]['representation'][0]['backupUrl'][0]
    m3u8 = json.loads(json.loads(info)['currentVideoInfo']['ksPlayJson'])['adaptationSet'][0]['representation'][0]['url']
    # print(m3u8)
    # print(info)
    # pprint(m3u8)
    # print(html_data)

    """
    二次请求
    """
    #发送请求 获取数据
    m3u8_data = requests.get(url=m3u8,headers=headers).text
    #提取ts链接
    ts_list = re.findall(',\n(.*?)\n#',m3u8_data,re.S)
    print(title)
    # print(title)
    # print(m3u8)
    # print(m3u8_data)
    # print(ts_list)

    #for循环遍历
    for ts in ts_list:
        #https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/
        ts_url = 'https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/'+ts
        # print(ts_url)

        """
        第三次请求:获取视频内容
            把所有视频片段合成一个完整的视频内容
        """
        ts_content = requests.get(url=ts_url,headers=headers).content
        with open('video\\'+ title + '.mp4',mode='ab') as f:
            f.write(ts_content)
     print('保存完毕!')

四、爬取结果(mp4文件)

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

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

相关文章

有效防范网络风险的关键措施

在数字化时代,企业面临着日益复杂和频繁的网络风险。提高员工的网络安全意识是防范网络威胁的关键一步。本文将探讨企业在提升网络安全意识方面可以采取的措施,以有效预防潜在的网络风险。 1. 开展网络安全培训:企业应定期组织网络安全培训&…

Android Studio读写低频RFID T5557卡源码

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?id675212889085&spma1z10.5-c.w4002-21818769070.13.21166f89nKgnJ7 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xml…

【AI绘画+本地部署】基于krita的AI绘画(含windows一键整合包)

comfyuikrita所有相关资源整合包(无需下载后面链接)百度网盘&#xff1a;https://pan.baidu.com/s/1iwNRpdTaD26YbzSDm6WLDA?pwdbur8 –来自百度网盘超级会员V4的分享 krita绘画软件官网地址 https://krita.org/en/download/krita-desktop/ krita-ai-diffusion 插件&#xff…

对java的interface的理解

一个例子来让我们理解更加深刻 这是我们的整体文件布局 ①A是接口 ②B和C是用来实现接口的类 ③show是我们的运行函数&#xff0c;用来展示 A接口 接口中定义的方法可以不用去实现,用其他类去实现(必须实现) 关键字:interface public interface A { // public static …

Redis分布式锁存在的问题及解决方案(值得珍藏)

Redis分布式锁存在的问题 在购票软件的情境中&#xff0c;当仅剩一张或几张票时&#xff0c;众多用户同时尝试购买。在不考虑任何外部干扰的情况下&#xff0c;逻辑上&#xff0c;系统应首先检查是否还有余票。如果仍有余票&#xff0c;用户可以顺利购买并导致库存相应减少&am…

鸿蒙next开发-OpenHarmony的NDK开发

Native API&#xff08;NDK&#xff09;入门 Native API是OpenHarmony SDK上提供的一组native开发接口与工具集合&#xff08;也称为NDK&#xff09;&#xff0c;方便开发者使用C或者C语言实现应用的关键功能。Native API只覆盖了OHOS基础的一些底层能力&#xff0c;如libc&am…

史上最全EasyExcel

一、EasyExcel介绍 1、数据导入&#xff1a;减轻录入工作量 2、数据导出&#xff1a;统计信息归档 3、数据传输&#xff1a;异构系统之间数据传输 二、EasyExcel特点 Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内…

制作一个Python聊天机器人

我们学习一下如何使用 ChatterBot 库在 Python 中创建聊天机器人&#xff0c;该库实现了各种机器学习算法来生成响应对话&#xff0c;还是挺不错的 什么是聊天机器人 聊天机器人也称为聊天机器人、机器人、人工代理等&#xff0c;基本上是由人工智能驱动的软件程序&#xff0…

代码随想录训练营第三十天|332.重新安排行程51. N皇后37. 解数独

332.重新安排行程 采用哈希表方式进行储存出发点和到达点&#xff0c;终止条件是result中的机场数量为机票1&#xff1b; 重点在于哈希表的运用和遍历方法 51. N皇后 wtf? 回溯算法非常形象的N叉树解法&#xff1a; 输入n&#xff0c;row col,chessboard 终止条件&#x…

2024年pmp的考试时间是什么时候?

2024最新考试时间已经出来了&#xff1a;分别是 3月、6月、8月、11月&#xff0c;四次&#xff0c;具体考试日期还需要关注官网的进一步通知。 一、PMP报考条件 年龄满足 22 周岁有官方授权的培训机构给的 35个PDU&#xff08;学时&#xff09; 就能报名。 是不是相当于没有…

[Python] 如何通过ctypes库来调用C++ 动态库 DLL?

ctypes库介绍 ctypes是Python的一个外部库,它提供了一种灵活的方式来调用C语言的动态链接库(DLL)或共享库(SO)。通过ctypes,我们可以在Python中直接调用C语言编写的函数和变量,从而实现跨语言的互操作。 ctypes 它提供了与 C 兼容的数据类型,并允许调用 DLL 或共享库中的…

本地MinIO存储服务通过Java程序结合Cpolar内网穿透进行远程连接

文章目录 前言1. 创建Buckets和Access Keys2. Linux 安装Cpolar3. 创建连接MinIO服务公网地址4. 远程调用MinIO服务小结5. 固定连接TCP公网地址6. 固定地址连接测试 前言 MinIO是一款高性能、分布式的对象存储系统&#xff0c;它可以100%的运行在标准硬件上&#xff0c;即X86等…

【Linux系列】在Pop!OS的启动器中添加自定义程序图标

文章目录 前言一、创建快捷方式二、快捷方式参数三、添加右键菜单和注册MIME 前言 无论是在Windows上&#xff0c;还是Linux&#xff0c;或者安卓这些我们常用的操作系统上&#xff0c;一些应用程序的快捷方式放在桌面或者启动器&#xff0c;只需要简单的点击就可以启动&#…

【算法】串联所有单词的子串【滑动窗口】

题目 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。例如&#xff0c;如果 words ["ab","cd","ef"]&#xff0c; 那么 "abcd…

Unity 编辑器篇|(十一)Gizmos (全面总结 | 建议收藏)

目录 1. 前言2 参数总览3 Gizmos绘制3.1 立方体&#xff1a;DrawCube3.2 视锥&#xff1a;DrawFrustum3.3 贴图&#xff1a;DrawGUITexture3.4 图标&#xff1a;DrawIcon3.5 线段&#xff1a;DrawLine3.6 网格&#xff1a;DrawMesh3.7 射线&#xff1a;DrawRay3.8 球体&#xf…

PBR材质背光面太暗优化

图形学中漫反射光照遵循兰伯特光照模型&#xff0c;它的公式如下 其中&#xff1a; &#xff1a;漫反射光颜色 &#xff1a;入射光颜色 &#xff1a;材质的漫反射系数 &#xff1a;法线方向 &#xff1a;光源方向 由于背光面的法线方向和光源方向的点积为负数&#xff0c;因此…

为什么 Golang Fasthttp 选择使用 slice 而非 map 存储请求数据

文章目录 Slice vs Map&#xff1a;基本概念内存分配和性能Fasthttp 中的 SliceMap性能优化的深层原因HTTP Headers 的特性CPU 预加载特性 结论 Fasthttp 是一个高性能的 Golang HTTP 框架&#xff0c;它在设计上做了许多优化以提高性能。其中一个显著的设计选择是使用 slice 而…

golang 中使用 statik 将静态资源编译进二进制文件中

现在的很多程序都会提供一个 Dashboard 类似的页面用于查看程序状态并进行一些管理的功能&#xff0c;通常都不会很复杂&#xff0c;但是其中用到的图片和网页的一些静态资源&#xff0c;如果需要用户额外存放在一个目录&#xff0c;也不是很方便&#xff0c;如果能打包进程序发…

shell编程-3

文章目录 shell学习第三天while 循环第一天的小游戏练习: 编写抽同学回答问题的脚本要想让这个脚本永久有效如何知道两个文件里的内存一样&#xff1f;如何判断某个人已经抽过了 文本处理相关命令seqxargsuniqsorttrcutawkpastesplitcoljoin小结一下作业 小知识点写脚本的流程怎…

基于SkyEye仿真飞腾处理器:运行U-Boot并加载Phytium-FreeRTOS

仿真平台在帮助提升研发效率、加快产品面市时间上的作用已得到诸多验证&#xff0c;通过对处理器进行仿真来支持嵌入式系统及软件的虚拟化开发、测试和验证成为目前应用较为广泛的方法。天目全数字实时仿真软件SkyEye是一款基于可视化建模的硬件行为级仿真平台&#xff0c;在众…