当前位置: 首页 > news >正文

python 爬虫 下载视频

测试 OK
II 在开发者工具里面 直接搜索m3u8 可以直接找相对应连接地址继续分析 这个m3u8 url地址是从哪里过来的 在什么地方有
III 我们想要视频数据 <m3u8连接> 在 网页源代码里面有获取整个视频内容 --》分为N个视频片段《ts文件》-->在m3u8连接里面--> 视频播放详情页面源代码里面二、代码实现步骤1.发送请求, 模拟浏览器对于视频播放详情页url发送请示https://www.acfun.cn/v/ac473438502.获取数据,获取服务器返回响应数据开发者工具里 response3.解析数据,提取我们想要的数据内容m3u8连接视觉标题4.发送请求。模拟浏览男友对于,m3u8连接 发送请求由第三步提取出来连接发送请求5.获取数据,获取服务器返回响应数据开发者工具里 response 对应所有ts文件连接6.解析数据,提取我们想要的数据内容所有ts文件连接7.保存数据,把所有视频片段内容保存下载,并且合成一个完整视频内容8.多页数据采集
#导入数据请求模块 要安装 在cmd里面 pip install requests
import requests
# 导入正则模块-->内置模块,不要安装
import re
# 导入json 模块 -->内置模块,不要安装
import json
#导入格式化输出模块 -->内置模块,不要安装
from pprint import pprint
#确定请求连接 <视频详情页>
reqUrl = "https://www.acfun.cn/v/ac47343850"
# 模拟请求头
# Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36
reqHeaders = {# 用户代理 表示浏览"user-agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36"
}
#发送请求
response = requests.get(url=reqUrl, headers=reqHeaders)
#<Response [200]>
#print(response)
#2.获取数据,获取服务器返回响应数据(网页源代码)
# 开发者工具里 response
#    response.text 获取响应文本数据<网页源代码>
#print(response.text)#3.解析数据,提取我们想要的数据内容
#  -m3u8链接
#  -视频标题
# 调用re模块里面的findall方法,去找到所有我们想要的数据内容
# re.findall('找什么数据','在什么地方找');
#title = re.findall('<title>"(.*?)"</title>',response.text);
# findall 返回的是一个列表
title = re.findall(r'<title >(.*?)</title>', response.text)[0]  # 非贪婪匹配避免截断:ml-citation{ref="3" data="citationList"}
title = title.replace('!','').replace('','').replace('-','').replace('AcFun弹幕视频网','').replace('认真你就输啦','')
#print("title: "+title)html_dta = re.findall('window.pageInfo = window.videoInfo = (.*?);',response.text)[0]
#print(html_dta);
# 转数据类型: 方便取值 --> 字典数据类型 键值对取值
json_data = json.loads(html_dta)
#print(json_data)#pprint(json_data)
#pprint(json_data['currentVideoInfo']['ksPlayJson'])
json_Str = json_data['currentVideoInfo']['ksPlayJson']
#print(json_Str)
#pprint(json.loads(json_Str))
m3u8_url = json.loads(json_Str)['adaptationSet'][0]['representation'][0]['backupUrl'][0]
#print(m3u8_url)
#print(json_data)
#pprint(json.loads(json_data))"""
4.发送请求。模拟浏览男友对于,m3u8连接 发送请求由第三步提取出来连接发送请求
5.获取数据,获取服务器返回响应数据开发者工具里 response 对应所有ts文件连接
"""
m3u8_data = requests.get(url=m3u8_url,headers=reqHeaders).text
#print(m3u8_data)# 提取我们想要的ts链接
# #EXTINF:5.000000,
m3u8_data = re.sub('#E.*','',m3u8_data).split()
#print(m3u8_data)
# for遍历,提取我们想要ts文件链接,把列表里面元素 一个一个提取出来count = len(m3u8_data)
print(count)
index = 0
for ts in m3u8_data:#print(ts)# 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)#7. 保存数据 --> 需要发送请求 + 获取数据, content 保存二进制数据,保存成文件时使用ts_content = requests.get(url=ts_url,headers=reqHeaders).contentwith open('video\\【温】最有活力的一集.mp4',mode='ab') as f:# 写入数据f.write(ts_content)print("index:"+ str(index) +","+ts_url)index = index + 1

http://www.lryc.cn/news/575540.html

相关文章:

  • C++ 中 enum 语法
  • 【模拟】N 字形变换(medium)
  • 2025最新Tomcat 安装教程(保姆级,图文讲解,带安装包)
  • Django 零基础起步:开发你的网站第一步
  • 供应链管理:供应链计划主要计算公式/方法
  • 独立开发还能做吗
  • 用户统计-01.需求分析和设计
  • 机器学习基础:概念、算法与实践入门
  • 酒店智能门锁系统常见问题解决方法——东方仙盟
  • MyBatis-Plus - 条件构造器Wrapper
  • Socket 编程 TCP
  • Linux 和 Windows 服务器:哪一个更适合您的业务需求?
  • 通信网络编程4.0——JAVA
  • Java+LangChain实战入门:深度剖析开发大语言模型应用!
  • ArrayList和LinkedList详解
  • WPF 实现自定义弹窗输入功能
  • Spring Boot 项目中同时使用 Swagger 和 Javadoc 的完整指南
  • Redis核心知识详解:从全局命令到高级数据结构
  • 数据结构-第二节-堆栈与队列
  • python打卡day56@浙大疏锦行
  • 学习昇腾开发的第9天--在Ubuntu下安装ffmpeg4.2.11
  • php项目部署----------酒店项目
  • Docker数据管理——AI教你学Docker
  • Redis-set集合
  • C++ 第三阶段:语言改进 - 第四节:nullptr vs NULL
  • 基于Spring Boot 构建现代化短视频平台:HBC Video全栈开发实战
  • 《高等数学》(同济大学·第7版)第九章 多元函数微分法及其应用第二节偏导数
  • 信创国产化替代中的开发语言选择分析
  • Java 大视界 -- Java 大数据机器学习模型在卫星通信信号干扰检测与智能抗干扰中的应用(323)
  • uniapp事件onLoad区分大小写