爬虫案例-爬取某站视频

embedded/2025/3/26 17:25:17/

文章目录

  • 1、下载FFmpeg
  • 2、爬取代码
  • 3、效果图

1、下载FFmpeg

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

点击下载: ffmpeg

在这里插入图片描述

安装并配置 FFmpeg
步骤:
1.下载 FFmpeg:
2.访问 FFmpeg 官网。
3.选择 Windows 版本(如 Windows Builds)。
4.下载 ffmpeg-master-latest-win64-gpl.zip。
5.解压文件:
6.将 ZIP 文件解压到 C:\Program Files\ffmpeg。
7.配置环境变量:
8.右键点击“此电脑” > “属性” > “高级系统设置” > “环境变量”。
9.在“系统变量”中找到 Path,点击“编辑”。
10.添加 FFmpeg 的 bin 目录路径:C:\Program Files\ffmpeg\bin。
11.保存并退出。

2、爬取代码

import requests
import os
from urllib.parse import urlparse
import subprocess# 视频和音频URL
video_url = "https://upos-sz-mirrorbd.bilivideo.com/upgcxcode/46/89/28747958946/28747958946-1-100022.m4s"
audio_url = "https://cn-gdgz-gd-live-02.bilivideo.com/upgcxcode/46/89/28747958946/28747958946-1-30216.m4s"# 请求头
header = {"Referer": "https://www.bilibili.com/video/av576765795?spm_id_from=333.788.player.player_end_recommend_autoplay","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0"
}# 视频请求参数
video_params = {"e": "ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=","uipk": "5","nbs": "1","deadline": "1742734058","gen": "playurlv2","os": "bdbv","oi": "1996673551","trid": "236892f04e4743a7a3da62f279953324u","mid": "0","platform": "pc","og": "hw","upsig": "d8a8f509632b390e62c65ba33d7b8342","uparams": "e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform,og","bvc": "vod","nettype": "0","orderid": "0,3","buvid": "362FA75D-BD0F-DC0D-E2AE-34526182765756167infoc","build": "0","f": "u_0_0","agrr": "1","bw": "18402","logo": "80000000"
}# 音频请求参数
audio_params = {"e": "ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=","uipk": "5","nbs": "1","deadline": "1742734058","gen": "playurlv2","os": "bcache","oi": "1996673551","trid": "0000236892f04e4743a7a3da62f279953324u","mid": "0","platform": "pc","og": "hw","upsig": "e0007fe3f8ffbf93d9c37a85134bda3c","uparams": "e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform,og","cdnid": "6697","bvc": "vod","nettype": "0","orderid": "0,3","buvid": "362FA75D-BD0F-DC0D-E2AE-34526182765756167infoc","build": "0","f": "u_0_0","agrr": "1","bw": "6238","logo": "80000000"
}
# 发送请求并下载视频
video_response = requests.get(video_url, headers=header, params=video_params, timeout=10)
video_response.raise_for_status()
# 发送请求并下载音频
audio_response = requests.get(audio_url, headers=header, params=audio_params, timeout=10)
audio_response.raise_for_status()# 创建输出目录
output_folder = r"C:/Users/zzx/Desktop/video/"
if not os.path.exists(output_folder):os.makedirs(output_folder)# 保存视频文件
video_filename = os.path.basename(urlparse(video_url).path)
video_file_path = os.path.join(output_folder, video_filename)
with open(video_file_path, "wb") as f:for chunk in video_response.iter_content(chunk_size=1024*1024):if chunk:f.write(chunk)
print(f"视频文件已下载:{video_file_path}")# 保存音频文件
audio_filename = os.path.basename(urlparse(audio_url).path)
audio_file_path = os.path.join(output_folder, audio_filename)
with open(audio_file_path, "wb") as f:for chunk in audio_response.iter_content(chunk_size=1024*1024):if chunk:f.write(chunk)
print(f"音频文件已下载:{audio_file_path}")# 使用 FFmpeg 合并
output_path = os.path.join(output_folder, "merged_video.mp4")
ffmpeg_path = r"C:\Program Files\ffmpeg\bin\ffmpeg.exe"  # 确保路径正确
if not os.path.exists(ffmpeg_path):raise FileNotFoundError(f"FFmpeg 未找到,请检查路径:{ffmpeg_path}")
ffmpeg_cmd = [ffmpeg_path,'-i', video_file_path,'-i', audio_file_path,'-c:v', 'copy','-c:a', 'copy','-strict', 'experimental',output_path]
try:subprocess.run(ffmpeg_cmd,check=True)print(f"合并完成:{output_path}")
except subprocess.CalledProcessError as e:print(f"合并失败:{e}")

3、效果图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/embedded/176316.html

相关文章

Docker容器之Dockerfile

用来构建镜像的文件。是指就是命令,参数,脚本。 指令合集以及说明 构建镜像图解: 实战测试: 构建自己的ubuntu: FROM ubuntu MAINTAINER liux ENV MYPATH /usr/local WORKDIR $MYPATH RUN apt-get update RUN apt install net-…

第二章 | 智能合约 区块链基础知识{介绍篇}

📚 第二章 | 智能合约 & 区块链基础知识 ——合约开发前,你必须搞懂这些底层逻辑! ✅ 本章导读 你是不是经常听说“区块链”、“智能合约”、“EVM”,但又觉得概念有点模糊? 别急,这一章我们用最简单…

全星研发项目管理APQP软件系统:汽车零部件制造行业的高效研发利器

全星研发项目管理APQP软件系统:汽车零部件制造行业的高效研发利器 在汽车零部件制造行业,研发效率和质量是企业生存与发展的关键。全星研发项目管理APQP软件系统凭借其专业性和实用性,为汽车零部件制造企业提供了强大的支持,助力…

【Android】基于udp通信的智能家居移动应用开发

每文一诗 💪🏼 男儿不展风云志,空负天生八尺躯 ——《警世通言卷四十》 译文:作为一个有学识有理想的男子,如果不施展自己的志向,成就一番事业,就枉费生为一个人。 背景 本次移动应用的开发主要…

ChatTTS 开源文本转语音模型本地部署 API 使用和搭建 WebUI 界面

ChatTTS(Chat Text To Speech),专为对话场景设计的文本生成语音(TTS)模型,适用于大型语言模型(LLM)助手的对话任务,以及诸如对话式音频和视频介绍等应用。支持中文和英文,还可以穿插笑声、说话间的停顿、以…

maven为什么发生依赖冲突?怎么解决依赖冲突?

maven为什么发生依赖冲突?怎么解决依赖冲突? 我们在开发的时候,偶尔会遇到依赖冲突的时候,一般都是NoClassDefFoundError、ClassNotFoundException、NoSuchMethodError。打开搜索框又发现有这个类,明明就是引入进来了&…

快速查询手机是否处于联网状态?

手机是否处于联网状态对于我们日常生活中的沟通、工作和娱乐都至关重要。有时候我们需要迅速了解一个手机号码的在网状态,例如是正常使用、停机、不在网等。而要实现这一功能,我们可以利用挖数据平台提供的在线查询工具,通过API接口来查询手机…

95 克的工业级动能:STONE 80A-M 电调深度测评 —— 无人机动力系统的轻量化范式

无人机动力革命:STONE 80A-M 电调技术白皮书——95g 超轻量化与工业级性能的极致融合(2025 实测版) ▶ 核心参数速览(工业级智能电调) 项目规格技术突破型号STONE 80A-M航空级轻量化设计电压范围6~14S(20V…