通过m3u8文件下载视频,

  通过m3u8文件下载视频,

  如何下载m3u8格式的视频?Python爬a站m3u8格式视频案例讲解_mb628b309d85c3f _博客的技术博客

  前言中的文字和图片均来自互联网,仅供学习交流,无商业用途。如有问题,请及时联系我们进行处理。

  流程1。数据源分析确定需求(要爬的内容是什么?)。只有知道数据需要什么,才能根据实际情况分析其来源(开发者工具【浏览器都自带鼠标右键插件或者F12】)并抓取包分析。

  所有ts文件都来自m3u8。

  2.代码实现步骤:发送对视频详情页url地址的请求;发送数据请求;获取视频详情页的源代码分析数据;获取m3u8的url地址;发送对m3u8的url地址的请求;发送数据请求;获取所有ts url地址(不完整,但需要拼接)发送对ts url地址的请求发送保存数据的请求逐个保存ts视频剪辑视频剪辑合成视频一个完整的视频内容代码导入所需的模块导入请求#数据请求模块pip安装请求

  不需要安装Import #正则表达式内置模块。

  导入os #文件操作

  Import zipfile #使用python代码制作压缩文件。当服务器发送请求时,服务器收到请求后才会返回数据URL=f 3359 www.acfun.cn/v/ac23857874给你(确保不是爬虫代码,你是普通客户端)。

  标题={

  用户代理: Mozilla/5.0(Windows NT 10.0;Win64x64) AppleWebKit/537.36 (KHTML,像壁虎一样)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]

  m3u 8 _ URL=re . find all( backup URL(。*?)],response.text)[0]。替换(, )。拆分( \)[2]

  m3 u8 _ data=requests . get(URL=m3 u8 _ URL,headers=headers)。文本

  Print(m3u8_url)正则解析正则表达式代替re.sub() join就是把列表变成字符串。

  \d匹配数字\d匹配多个数字*通过0或无数个数字匹配前一个字符。

  m3u8_data=re sub( # EXTM3U ,,m3u 8 _ data)

  m3u8_data=re sub( # EXT-X-VERSION:\ d ,,m3u 8 _ data)

  m3u8_data=re sub( # EXT-X-target duration:\ d ,,m3u 8 _ data)

  m3u8_data=re sub( # EXT-X-MEDIA-SEQUENCE:\ d ,,m3u 8 _ data)

  m3u8_data=re.sub(#EXTINF:\d\\d,,,m3u8_data)

  m3u8_data=re sub( # EXT-X-ENDLIST ,,m3u 8 _ data)

  m3u8_data=m3u8_data.split()

  对于m3u8_data中的链接:

  #字符串串联加上完整的url地址以构建完整的url地址

  Link _ URL= 3359tx-safety-video.acfun.cn/mediacloud/acfun/acfun _视频/HLS/链接保存文件。您确定保存文件的路径吗?保存文件的名称和后缀link _ content=requests . get(URL=link _ URL,headers=headers)。内容

  link_name=link.split( . )[1]

  打开(文件名链接名称)。ts ,mode=w )作为f:

  f.write(链接内容)

  合并视频文件=os.listdir(文件名)

  打印(开始视频剪辑合成...)

  用zipfile。ZipFile(文件名标题 . mp4 ,模式=w )作为z:

  对于tqdm中的文件(文件):

  路径文件=文件名文件

  z.write(路径文件)

  os.remove(路径文件)

  打印(...视频剪辑合成后’)

  

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: