【Python实战案例】Python3网络爬虫:“可惜你不看火影,也不明白这个视频的分量......”m3u8视频下载,那些事儿~
前言
哈喽!上午好嘞,各位小可爱们!有没有等着急了呀~
由于最近一直在学习新的内容,所以耽搁了一下下,抱歉.jpg 双手合十。
所有文章完整的素材+源码都在👇👇
粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。
今天稍微赶了一下下,嘿嘿,想着还是给大家更新一下蛮,爬虫的内容基本上都过不了审核,
可能是我写的方式不对,思考.jpg,这么久了还是没找到好办法,大概率知道不能出现某些网
站的名字网址等,所以最近给大家更新的爬虫系列,就简简单单给大家写一点儿叭~
部分爬虫的代码是有录制完整的视频滴 讲解的更加仔细哈,需要的还是可以滴一下我哦!
好啦,开始今天的正题吧——Python采集某网站m3u8 格式视频哦 ~
正文
一、课前准备
运行环境:Python3(解释器版本我用的3.7,识别代码)Pycharm(编辑器 编辑代码滴 )
模块安装如下——
requests——pip install +模块名 或镜像源安装:pip install -i https://pypi.douban.com/simple/+模块名
内置模块:import re import json 安装好Python环境即可。
二、爬虫的基本流程
明确自己的需求---> 视频内容以及视频标题 - 通过开发者工具<>抓包分析,分析视频是从哪里来的 - F12 fn+f12 右击页面点击检查 - a站 m3u8视频格式 ---> media 是没有数据 mp4文件 ---> 整个视频内容 m3u8视频格式 ---> 把 整个视频内容 分割非常多小片段 - 代码的实现步骤 1. 发起请求 2. 获取数据 3. 解析数据 4. 保存数据
三、抓取目标
1)目标网址
https://www.acfun.cn/v/ac13524296
分析视频是从哪里来的 - F12。
找到User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36
2)代码实现
"""
# 导入模块
import requests
# 导入正则模块
import re
# 导入数据格式化模块
from pprint import pprint
import json
url = 'https://www.acfun.cn/v/ac13524296'
# 模拟浏览器 请求头
# User-Agent 用户代理
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'
}
# 1. 发起请求
response = requests.get(url, headers=headers)
# 2. 获取数据 获取响应
# print(response.text)
# 3.数据解析
"""
.*? 元字符
. 匹配任意字符除了换行符之外
*匹配前一个字符0或者无限个
? 非贪婪匹配
"""
# 提取标题p
title = re.findall('"title":"(.*?)",',response.text)[1]
# print(title)
# 通过re提取视频内容信息
html_data = re.findall('window.pageInfo = window.videoInfo =(.*?);',response.text)[0]
# 数据转化json
json_data = json.loads(html_data)
# pprint(json_data)
# 字典取值 dict = {键值:value值} dict[键值]
m3u8_url = json.loads(json_data['currentVideoInfo']['ksPlayJson'])['adaptationSet'][0]['representation'][0]['backupUrl'][0]
pprint(m3u8_url)
m3u8_data = requests.get(m3u8_url, headers=headers).text
# print(m3u8_data)
m3u8_data=re.sub('#E.*','',m3u8_data).split()
# print(m3u8_data)
for ts in m3u8_data:# print(ts)ts_url = 'https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/hls/'+tsts_name = ts.split('.')[1]# print(ts_url,ts_name)ts_content = requests.get(url=ts_url,headers=headers).content# 保存 图片 音频 视频 都是字节流 二进制with open('video\\'+ts_name+'.mp4' , mode='wb') as f:f.write(ts_content)
四、效果展示
A站是m3u8的数据格式,很多人就会问了,你怎么知道,你为什么知道,你凭什么知道。
这些咱们都是可以通过开发者工具对于网页内容的分析,可以看到链接的后缀都是ts结尾的,
这样的文件内容都是你m3u8格式,是把整个视频分成多段的ts文件。
我们可以看到一段视频仅仅只有5秒钟的时间。对于ts文件有一个特性,它就是会存在一个
m3u8文件里面,所有的ts文件都在那,所以只需要找到m3u8的文件就可以了。
视频文件:
如何合成ts文件变成mp4呢?
添加到压缩文件——更改压缩文件后缀名以及压缩方式——后缀名改为:.mp4,压缩方式改
为:存储,然后点击确定即可。
播放视频:
特别说明:这样合并的前提是你的ts文件都是0000,然后0001 这样按照顺序排列的,不然你
合并出来之后播放顺序是乱的。
总结
XX忍者这部漫画连载了将近二十年,正好是一代人从小成长起来的时间。可以说不少人的童年
是伴随着XX忍者而成长起来的。让人记忆深刻的不仅有强大的忍者,眼花缭乱的忍术,还有一
些“童年阴影”的画面。让那个时候的我们记忆犹新。今天带大家爬完这些视频之后,有没有勾
起了你童年时期的回忆呢?
✨完整的素材源码等:可以滴滴我吖!或者点击文末hao自取免费拿的哈~
🔨推荐往期文章——
1.0 Python爬虫入门推荐案例:学会爬虫_表情包手到擒来~
1.1 【Tkinter界面化小程序】用Python做一款免费音乐下载器、无广告无弹窗、清爽超流畅哦
1.2 【Python爬虫实战】 不生产小说,只做网站的搬运工,太牛逼了~(附源码)
1.3 【Python抢票神器】火车票枪票软件到底靠谱吗?实测—终极攻略。
1.4 【Python实战】WIFI密码小工具,甩万能钥匙十条街,WIFI任意连哦~(附源码)
1.5 【Python实战】再分享一款商品秒杀小工具,我已经把压箱底的宝贝拿出来啦~
1.6 【Python实战】年底找工作,年后不用愁,多个工作岗位随你挑哦~
1.7 【Python实战】听书就用它了:海量资源随便听,内含几w书源,绝对精品哦~
1.8 【Python实战】海量表情包炫酷来袭,快来pick斗图新姿势吧~(超好玩儿)
🎁文章汇总——
Python文章合集 | (入门到实战、游戏、Turtle、案例等)
(文章汇总还有更多你案例等你来学习啦~源码找我即可免费!)
相关文章:

【Python实战案例】Python3网络爬虫:“可惜你不看火影,也不明白这个视频的分量......”m3u8视频下载,那些事儿~
前言 哈喽!上午好嘞,各位小可爱们!有没有等着急了呀~ 由于最近一直在学习新的内容,所以耽搁了一下下,抱歉.jpg 双手合十。 所有文章完整的素材源码都在👇👇 粉丝白嫖源码福利,请移…...

UE4:使用样条生成随机路径,并使物体沿着路径行走
一、关于样条的相关知识 参考自:样条函数 - 馒头and花卷 - 博客园 三次样条(cubic spline)插值 - 知乎 B-Spline(三)样条曲线的性质 - Fun With GeometryFun With Geometry 个人理解的也不是非常深,但是大概要知道的就是样条具…...
计算机组成原理(判断题)
计算机控制器是根据事先编好的程序,根据其指令来进行控制只会每一步骤的操作; 面向主存的双总线结构计算机系统,因在CPU与主存之间增加了一组存储器总线,由于通过存储器总线访存,提高了CPU的访存速度,也减轻…...

error: failed to push some refs to ... 就这篇,一定帮你解决
目录 一、问题产生原因 二、解决办法 三、如果还是出问题,怎么办?(必杀) 一、问题产生原因 当你直接在github上在线修改了代码,或者是直接向某个库中添加文件,但是没有对本地库同步,接着你想…...

DAMA数据管理知识体系指南之数据仓库和商务智能管理
第9章 数据仓库和商务智能管理 9.1简介 数据仓库(Data Warehouse,DW)由两个主要部分构成:首先是一个整合的决策支持数据库,其次是用于收集、清洗、转换、存储来自于各种操作型数据源和外部数据源数据的相关软件程序。两者结合以支持历史的、…...
PHP的五种常见设计模式
工厂模式 最初在设计模式 一书中,许多设计模式都鼓励使用松散耦合。要理解这个概念,让我们最好谈一下许多开发人员从事大型系统的艰苦历程。在更改一个代码片段时,就会发生问题,系统其他部分 —— 您曾认为完全不相关的部分中也有…...

教你搞懂线段树,从基础到提高
秋名山码民的主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 🙏作者水平有限,如发现错误,还请私信或者评论区留言! 目录前言线段树逻辑概念线段树的俩个重要用处代码实现线段树题目巩固最后…...

C语言进阶——自定义类型:结构体
🌇个人主页:_麦麦_ 📚今日名言:生活不可能像你想象的那么好,也不会像你想象的那么糟。——莫泊桑《羊脂球》 目录 一、前言 二、正文 1结构体 1.1结构体的基础知识 1.2结构的声明 1.3特殊的声明 1.4结构体变量的…...

SpringSecurity学习笔记01
目录 一、课程介绍 二、框架概述 三、入门案例 四、基本原理(过滤器链) 五、基本原理(过滤器加载过程) 六、基本原理(两个重要的接口) 七、web权限方案-用户认证(设置用户名密码上) 八、…...

Python语言零基础入门教程(十一)
Python 列表(List) 序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。 Python有6个序列的内置类型,但最常见的是列表和元组。 序列都可以…...

现货白银基础知识
任何活动,任何项目,任何工作都离不开基础知识,这是肯定的。万丈高楼平地起,要想要简称百层高楼,首先得把低级打好!现货白银投资也是一样的道理,现在我们就来一起聊聊现货白银基础知识的问题&…...

数据库原理及应用基础知识点
数据库原理基础知识点大全数据库原理及应用1、数据库系统概述1.1 基本概念1.2 数据模型1.3 数据库系统的结构2、实体 -- 联系模型2.1 基本概念2.2 实体-联系图2.3 弱实体集3、关系数据模型3.1 关系数据库的结构3.2 从ER模型到关系模型3.3 关系操作、完整性约束、关系代数4、关系…...

【数据结构】栈(stack)
写在前面本篇文章开始讲解栈的有关知识,其实把顺序表和链表学好,那么这一章便不在话下,栈实际上就是顺序表或链表的一些特殊情况。用顺序表实现的栈叫做顺序栈用链表实现的栈叫做链栈文章的内容分为几个部分,希望读者能快速了解文…...

初识shell
文章目录一、shell基本知识1.1为什么学习和使用Shell编程1.2 什么是Shell1.2.1 shell的起源1.2.2 shell的功能1.3 shell的分类1.4 作为程序设计的语言——shell1.5 如何学好shell1.6 shell脚本的基本元素1.7 shell脚本编写规范1.8shell脚本的执行方式1.9 执行脚本的方法1.10 sh…...
程序员如何编写好开发技术文档 如何编写优质的API文档工作
编写技术文档,是令众多开发者望而生畏的任务之一。它本身是一件费时费力才能做好的工作。可是大多数时候,人们却总是想抄抄捷径,这样做的结果往往非常令人遗憾的,因为优质的技术文档是决定你的项目是否引人关注的重要因素。无论开…...

二级C语言操作例题(四十)
一、程序填空题 在此程序中,函数fun的功能是:在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。 例如,若s所指字符串”baacda”,中c的字符为…...

vue-router 源码解析(二)-创建路由匹配对象
文章目录基本使用导语createRouterMatcher 创建匹配路由记录addRoute 递归添加matchercreateRouteRecordMatcher 创建matchertokenizePath 解析pathtokensToParser 记录打分insertMatcher 将matcher排序总结基本使用 const routes [{path:"/",component: Demo2,nam…...

分布式新闻项目实战 - 10.Long类型精度丢失问题
怒发冲冠,凭阑处、潇潇雨歇。抬望眼,仰天长啸,壮怀激烈。三十功名尘与土,八千里路云和月。莫等闲、白了少年头,空悲切。 靖康耻,犹未雪。臣子恨,何时灭。驾长车,踏破贺兰山缺。壮志饥…...
如何将本地jar包安装到maven仓库
mvn install:install-file:主要是将本地自定义jar安装到maven仓库,然后在pom中可以直接通过dependency的方式来引用。 此命令有如参数: 命令说明-DgroupId自定义groupId设置groupId 名-DartifactId自定义artifactId设置该包artifactId名-Dversion自定义…...

C++:map和set的认识和简单使用/关联式容器
关联式容器 关联式容器即是用来存储数据的,并且存储的是<Key,Value>结构的键值对,在数据检索时效率比序列式容器高。 序列式容器也就是vector、list、queue等容器,因为其底层为线性序列的数据结构,里面存储的是…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...