前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

本篇文章流程

一. 数据来源分析

  1. 确定需求 (确定要爬的内容是什么?)。只有知道数据要的是什么,才能根据实际情况去分析 它的来源

  2. 怎么去分析 (开发者工具[浏览器都自带 鼠标右键点击插件或者F12]) 抓包分析
    所有的ts文件内容 来自 m3u8

有不懂的问题、报错解答,想要源码、视频教程,数据集的同学也可以点这里

二. 代码实现步骤

  1. 发送请求 对于视频的详情页url地址发送请求
  2. 获取数据 获取视频的详情页网页源代码
  3. 解析数据 提取 m3u8的 url地址 标题
  4. 发送请求 对于m3u8的 url地址 发送请求
  5. 获取数据 获取所有ts url地址(不是完整是需要拼接)
  6. 发送请求 对于 ts url地址 发送请求
  7. 保存数据 保存ts 视频片段 一个一个视频片段
  8. 合成视频 一个整体视频内容

代码

导入所需的模块

import requests # 数据请求模块 pip install requests
import re # 正则表达式 内置模块 不需要安装
import os # 文件操作
import zipfile # 做压缩文件

用python代码,对于服务器发送请求,服务器接收到请求之后(确定不是爬虫代码,你是正常客户端),才会给你返回数据

url = f'https://www.acfun.cn/v/ac23857874headers = {'User-Agent': ' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
print(response)

运行代码,返回值为200

解析数据 提取m3u8 url地址 标题

元字符 * +

.*? 通配符 可以匹配任意字符(除了\n) 匹配文字 匹配数字 字母 特殊字符 re.S

\ 转义字符 把含有特殊含义的字符转成除了字符本身以外 没有其他意思

[0] 正则表达式提取出来的内容 返回是列表 [0] 0 是指列表索引位置 索引位置是0 是列表里面的第一个元素

[0,1,2,3,4,5] img\ 我转义我自己

() 表示精确匹配 ? 非贪婪匹配

title = re.findall('<title >(.*?) - AcFun弹幕视频网 - 认真你就输啦 \(\?ω\?\)ノ- \( ゜- ゜\)つロ</title>', response.text)[0]
m3u8_url = re.findall('"backupUrl(.*?)\"]', response.text)[0].replace('\"', '').split('\')[2]
m3u8_data = requests.get(url=m3u8_url, headers=headers).text
print(m3u8_url)

正则解析

正则表达式替换 re.sub() join 是把列表转成字符串

\d 匹配数字 \d+匹配多个数字 * 匹配前一个字符0个或者多个无数个

m3u8_data = re.sub('#EXTM3U', '', m3u8_data)
m3u8_data = re.sub('#EXT-X-VERSION:\d', '', m3u8_data)
m3u8_data = re.sub('#EXT-X-TARGETDURATION:\d', '', m3u8_data)
m3u8_data = re.sub('#EXT-X-MEDIA-SEQUENCE:\d', '', m3u8_data)
m3u8_data = re.sub('#EXTINF:\d\.\d+,', '', m3u8_data)
m3u8_data = re.sub('#EXT-X-ENDLIST', '', m3u8_data)
m3u8_data = m3u8_data.split()for link in m3u8_data:# 字符串拼接 加上 才是完整url地址 构建完整的url地址link_url = 'https://tx-safety-video.acfun.cn/mediacloud/acfun/acfun_video/hls/' + link

保存文件 你确定文件保存路径 保存文件的名字 后缀

link_content = requests.get(url=link_url, headers=headers).content
link_name = link.split('.')[1]
with open(filename + link_name + '.ts', mode='w') as f:f.write(link_content)

合并视频

files = os.listdir(filename)
print('开始视频片段合成..................')with zipfile.ZipFile(filename + title + '.mp4', mode='w') as z:for file in tqdm(files):path_file = filename + filez.write(path_file)os.remove(path_file)print('视频片段合成完毕..................')


怎么下载m3u8格式视频?Python爬取A站m3u8格式视频案例讲解相关推荐

  1. Python 爬取 B 站 5000 条视频,揭秘为何千万人为它流泪!

    [CSDN 编者按]<哪吒>看哭了无数人!编者看的那场,有很多小朋友,一开始他们还被太乙真人的滑稽,逗得哈哈笑.到了哪吒成魔要杀父亲.跪别父母.因为宿命不得以和敖丙为敌时,影院里突然安静下 ...

  2. Python爬取B站5000条视频,揭秘为何千万人为它流泪

    作者 | Yura编辑 | 胡巍巍来源 | CSDN(ID:CSDNnews) 导语:我们特邀作者Yura爬取B站5000条视频,为你揭秘电影<哪吒>的更多"优秀梗", ...

  3. Python爬取B站5000条视频,揭秘为何千万人看「哪吒」流泪

    导读:<哪吒>看哭了无数人!有很多小朋友,一开始他们还被太乙真人的滑稽,逗得哈哈笑.到了哪吒成魔要杀父亲.跪别父母.因为宿命不得以和敖丙为敌时,影院里突然安静下来. 人们喜欢<哪吒& ...

  4. 用Python爬取B站、腾讯视频、芒果TV和爱奇艺视频弹幕

    众所周知,弹幕,即在网络上观看视频时弹出的评论性字幕.不知道大家看视频的时候会不会点开弹幕,于我而言,弹幕是视频内容的良好补充,是一个组织良好的评论序列.通过分析弹幕,我们可以快速洞察广大观众对于视频 ...

  5. python 软件开发 哔哩哔哩_介绍Python爬取哔哩哔哩视频

    栏目介绍如何爬取视频 相关免费学习推荐: 本篇文章主要给大家讲解下如实使用python 爬取哔哩哔哩中的视频,首先我是一名大数据开发工程师,爬虫只是我的一个业余爱好,喜欢爬虫的小伙伴可以一起交流.好了 ...

  6. python 爬取B站原视频的实站代码

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云,作者:python学习教程 ( 想要学习Python?Pyt ...

  7. 如何用python爬取视频_介绍Python爬取哔哩哔哩视频

    python视频教程栏目介绍如何爬取视频 本篇文章主要给大家讲解下如实使用python 爬取哔哩哔哩中的视频,首先我是一名大数据开发工程师,爬虫只是我的一个业余爱好,喜欢爬虫的小伙伴可以一起交流.好了 ...

  8. python爬取b站评论_学习笔记(1):写了个python爬取B站视频评论的程序

    学习笔记(1):写了个python爬取B站视频评论的程序 import requests import json import os table='fZodR9XQDSUm21yCkr6zBqiveY ...

  9. python爬取bilibili弹幕_用Python爬取B站视频弹幕

    原标题:用Python爬取B站视频弹幕 via:菜J学Python 众所周知,弹幕,即在网络上观看视频时弹出的评论性字幕.不知道大家看视频的时候会不会点开弹幕,于我而言,弹幕是视频内容的良好补充,是一 ...

最新文章

  1. Kubernetes Service 对象的使用
  2. [Java入门笔记] Java语言基础(四):流程控制
  3. 合成复用原则java实例_第7节 合成复用原则
  4. SAP Kyma组件一览
  5. 启动tomcat提示The Network Adapter could not establish the connection
  6. cygwin swoole_swoole入门--------基础概念
  7. Swift 全功能的绘图板开发
  8. ccie 与 java,上海ccie脚踏实地,java常量
  9. python 在linux下通过top,和dh命令获得cpu,内存,以及硬盘信息
  10. 知虾:2022 Shopee开店图文指南,手把手教你入驻
  11. pix2pixHD总结
  12. 微分方程和线性代数(先理解一阶微分形式不变性)
  13. 2012年2月有29天
  14. 【C盘内存不足的解决方法】
  15. framemaker 换行
  16. lightning接口_新iPhone或将使用TypeC接口~
  17. PR放入视频音频后没声音,及提示MME设备内部错误的解决办法
  18. CIO40: 学习.遇见更优秀的自己
  19. 从零维到十维空间如何在纸上用手绘出来
  20. 《微服务设计》 读书笔记

热门文章

  1. 自己写的古剑奇谭3D宣传画(哈哈)
  2. Windows下运行Fast DDS示例程序(包含.idl文件的使用方法)
  3. Android截屏一键分享开发与实现方式的反思和总结
  4. 配置Memcached禁止公网访问
  5. Emscripten中的文件系统
  6. python实现查看微信消息撤回
  7. Android安卓读取手机中的图片,实现相册管理功能
  8. leetcode 708 剑指 Offer II 029. 排序的循环链表 python
  9. 使用OpenCV实现图像覆盖
  10. 算法竞赛基础训练题_选择题