爬取A站视频,涉及m3u8格式的处理

这篇具有很好参考价值的文章主要介绍了爬取A站视频,涉及m3u8格式的处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、抓包分析

1.进入A站进行抓包分析

进入一个页面,右点击鼠标按钮,点击检查

爬取A站视频,涉及m3u8格式的处理,音视频

 接着点击network,点击Fetxh/XHR,然后刷新网页,得到下面的页面

 爬取A站视频,涉及m3u8格式的处理,音视频发现其中有许多d595开头的文件,它们是ts文件,点击其中一个。在General中复制其requests URL在浏览器打开,会自动下载一个文件,保存为ts,用视频打开发现是一个三四秒的视频。复制其中的一部分进行搜索。

爬取A站视频,涉及m3u8格式的处理,音视频

爬取A站视频,涉及m3u8格式的处理,音视频 

爬取A站视频,涉及m3u8格式的处理,音视频 

点击搜索中的最后一个包,查看这 个包,点击preview,可以得到我们想要的下载ts的地址。

爬取A站视频,涉及m3u8格式的处理,音视频

 现在的问题来到,如何找到这个包的url,最后可以在源代码中找到这个包的url。

2.爬虫步骤分解

首先访问该页面源代码,提取到含有视频ts格式地址的包的url,然后访问这个url,提取所有的视频ts地址,然后对视频ts地址进行访问保存视频,最后将视频合成一个。

二、代码展现与讲解

import re
import requests
import time
import os
import zipfile
from tqdm import tqdm

ac_id = input('请输入你想要下载的视频ID:')
url = f'https://www.acfun.cn/v/{ac_id}'  # 网页源代码的url地址
headers = {
    "User-Agent":
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
response = requests.get(url=url,headers=headers)  # 得到网页源代码

m3u8_url = re.findall('backupUrl(.*?)\"]',response.text)[0].replace('"','').split('\\')[2]  # 利用正则提取我们想要抓取的包的url
title = re.findall('<title >(.*?) - AcFun弹幕视频网 - 认真你就输啦 \(\?ω\?\)ノ- \( ゜- ゜\)つロ</title>',response.text)[0] # 获取视频的名称
m3u8_data = requests.get(url=m3u8_url,headers=headers).text  # 获取报的内容
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)

filename = f'{title}\\'        # 生成一个文件夹保存视频
if not os.path.exists(filename):
    os.mkdir(filename)
m3u8_data = m3u8_data.split()# 以空格分割     # 分割后,将字符串转化为列表
print('正在下载ts文件内容,请稍后..........')

for link in tqdm(m3u8_data):
    link_url = 'https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/'+link  # 观察ts的下载地址,对url进行补全
    link_name = link.split('.')[1]   # 获取每一个ts的名称
    link_content = requests.get(url=link_url,headers=headers).content  #以二进制保存视频
    with open(filename+link_name+'.ts',mode='wb') as f:
        f.write(link_content)

print('ts视频片段下载完成.........')

三、总结

1.学到一个库tqdm的使用

2.m3u8视频是分成许多部分的,要找到那个含有所有部分url的包,然后就是找这个包的url

3.合成视频使用zipfile库

files = os.listdir(filename)  # 获取文件夹下所有的小视频
with zipfile.ZipFile(filename+title+'.mp4',mode='w') as z:

        z.write(content)文章来源地址https://www.toymoban.com/news/detail-818186.html

到了这里,关于爬取A站视频,涉及m3u8格式的处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp m3u8格式视频加载

    uniapp一:mui-player:三方  h5 web app   uniapp 使用 mui-player 插件播放 m3u8/flv 视频流_翘翘红的博客-CSDN博客 uniapp 开发的h5项目,需要播放m3u8/flv后缀的视频,网上有很多视频插件,但是样式和效果不尽如人意,博主最后选择mui-player插件: 定制化稍微强一点以及有官方文档可以阅

    2024年02月12日
    浏览(43)
  • vue项目如何播放m3u8格式视频

    在node_modeols里面找到@easydarwin下的dist/compent/EasyPlayer-lib.min.js和EasyPlayer.wasm两个文件复制到pubilc目录下 引入 在components中 在模板中

    2024年02月15日
    浏览(54)
  • video插件播放m3u8格式视频(存原生)

    这里使用原生的javascript实现m3u8格式视频播放。 使用了包括video.min.js库和HLS插件。 在上面代码中,首先引入了video.min.js库和对应的播放器样式video-js.css,还引入了videojs-contrib-hls.min.js库(引入顺序考虑优先放到页面加载之前)。 之后,创建一个video标签,并指定source的src属性为

    2024年02月13日
    浏览(50)
  • 原生小程序实现视频监控(m3u8格式)

    本文主要实现实时播放监控视频,基于原生微信小程序实现 1、在.wxml文件代码,视频一定要写宽高,不然可能显示不出来,以下属性介绍 src:视频地址, controls:是否显示默认播放控件(播放/暂停按钮、播放进度、时间) binderror: 视频播放出错时触发 show-center-play-btn:是

    2023年04月08日
    浏览(36)
  • m3u8视频流,视频切片处理

    随着客户的增加,mp4文件播放的弊端也日益凸显。 mp4缺点 1):mp4的关键帧元素往往很大,需要加载很长时间才能开始播放。 2):当用户打开一个视频播放的时候,浏览器会持续请求下载mp4文件直到下载完成,就算是用户暂停视频播放浏览器也会持续这种下载状态,给服务器硬

    2024年02月02日
    浏览(61)
  • vue项目中使用m3u8格式播放大视频

    网站中播放大视频时经常卡顿,无法顺利播放,在查找解决方案时发现很多文章建议使用m3u8流媒体播放代替MP4播放,做了下测试,现总结记录下测试过程中遇到的问题与解决办法。 1.使用ffmpeg做视频转换 1)下载ffmpeg  FFmpeg github 2)在环境变量path中加入配置,以便在控制台使

    2024年02月09日
    浏览(53)
  • Uniapp H5 播放m3u8、flv格式视频

    简述一下业务需求,仅仅是需要在H5页面播放m3u8格式的视频,但是Uniapp官方提供的video组件在H5端不支持m3u8格式的视频播放,所以需要使用第三方库来播放,这里我使用的是MuiPlayer,但是貌似MuiPlayer的官方文档没有过多提及UniApp的用法,由于MuiPlayer默认支持mp4格式播放,所以

    2024年04月15日
    浏览(35)
  • 使用ffmpeg将视频转成HLS(m3u8)格式

      HLS (HTTP Live Streaming)是苹果推出的视频流协议,HLS格式的视频包含一个m3u8文本文件,以及众多的.ts的视频片段,而m3u8文本文件的作用就是将这些ts片段索引起来。 因为HLS协议是将视频切分成很多小的ts片段,这些小片段很适合放到cdn上,有很多视频文章都使用了hls格式传

    2024年02月13日
    浏览(46)
  • 在vue中使用dplayer播放hls m3u8格式视频

    Dplayer 官方文档地址 Dplayer官方地址 虽然在vue中有vue-dplayer但却没有对hls进行很好的支持 所以建议还是使用Dplayer 在组件中引入 播放m3u8格式的视频需要框选部分 – 建议查看官方文档MSE支持 切换视频 切换视频需要用到 switchVideo() api 方便大家复制 部分片段

    2024年02月13日
    浏览(36)
  • vue使用video.js实现播放m3u8格式的视频

    我使用的video.js版本如下: 在components下新建一个VideoPlayer文件夹 index如下:  直接把地址传给sourceUrl即可

    2024年02月12日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包