爬虫案例-爬取某站视频

news2025/3/25 7:38:26

文章目录

  • 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.coloradmin.cn/o/2320535.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nacos-未经授权创建用户漏洞

1、修改配置文件 vim application.properties# 修改配置项 nacos.core.auth.enabledtrue nacos.core.auth.enable.userAgentAuthWhitefalse2、重启nacos systemctl restart nacos3、验证 打开nacos部署服务器输入命令 curl -XPOST -d “usernametest123&passwordtest!123…

C++:IO库

一、C IO库的架构 C标准库中的IO系统基于流(Stream)​的概念,分为三层结构: ​流对象​(如cin, cout, fstream)​流缓冲区​(streambuf,负责底层数据处理)​数据源/目的…

企业级前端架构设计与实战

一、架构设计核心原则 1.1 模块化分层架构 典型目录结构: src/├── assets/ # 静态资源├── components/ # 通用组件├── pages/ # 页面模块├── services/ # API服务层├── store/ # 全局状态管理├── uti…

从入门到精通【MySQL】 CRUD

文章目录 📕1. Create 新增✏️1.1 单行数据全列插入✏️1.2 单行数据指定列插入✏️1.3 多行数据指定列插入 📕2. Retrieve 检索✏️2.1 全列查询✏️2.2 指定列查询✏️2.3 查询字段为表达式✏️2.4 为查询结果指定别名✏️2.5 结果去重查询 &#x1f…

08_双向循环神经网络

双向网络 概念 双向循环神经网络(Bidirectional Recurrent Neural Network, BiRNN)通过同时捕捉序列的正向和反向依赖关系,增强模型对上下文的理解能力。与传统的单向网络不同,BIRNN 能够同时从过去和未来的上下文信息中学习,从而提升模型的…

2025年Postman的五大替代工具

虽然Postman是一个广泛使用的API测试工具,但许多用户在使用过程中会遇到各种限制和不便。因此,可能需要探索替代解决方案。本文介绍了10款强大的替代工具,它们能够有效替代Postman,成为你API测试工具箱的一部分。 什么是Postman&…

(四)---四元数的基础知识-(定义)-(乘法)-(逆)-(退化到二维复平面)-(四元数乘法的导数)

使用四元数的原因 最重要的原因是因为传感器的角速度计得到的是三个轴的角速度, 这三个轴的角速度合成一个角速度矢量, 结果就是在微小时间内绕着这个角速度矢量方向为轴旋转一定角度. 截图来源网址四元数 | Crazepony开源四轴飞行器

汇能感知高品质的多光谱相机VSC02UA

VSC02UA概要 VSC02UA是一款高品质的200万像素的光谱相机,适用于工业检测、农业、医疗等领域。VSC02UA 包含 1600 行1200 列有源像素阵列、片上 10 位 ADC 和图像信号处理器。它带有 USB2.0 接口,配合专门的电脑上位机软件使用,可进行图像采集…

Blazor+PWA技术打造全平台音乐播放器-从音频缓存到离线播放的实践之路

开局三张图… 0.起源 主要是自己现在用的是苹果手机,虽然手机很高级,但是想听自己喜欢的歌曲确是不容易,在线app都要付费,免费的本地播放器都不太好用(收费的也不太行),基础功能都不满足。此外…

使用LangChain开发智能问答系统

代码地址见文末 1. 项目配置 1.1 Neo4j 数据库配置 1. 安装与环境变量 解压路径:将neo4j-community-5.x.x.zip解压至D:\neo4j-community-5.x.x环境变量: NEO4J_HOME: D:\neo4j-community-5.x.xJAVA_HOME: D:\neo4j-community-5.x.x\jdk(注意:需指向 JDK 目录)Path 变量…

Centos操作系统安装及优化

Centos操作系统安装及优化 零、环境概述 主机名 centos版本 cpu 内存 Vmware版本 ip地址 test CentOS Linux release 7.6.1810 (Core) 2C 2G 15.5.1 10.0.0.10 一、介质下载 1、7.6版本下载 CentOS7.6标准版下载链接: https://archive.kernel.org/centos-vault/7.6.1810/i…

游戏引擎学习第177天

仓库:https://gitee.com/mrxiao_com/2d_game_4 今日计划 调试代码有时可能会非常困难,尤其是在面对那些难以发现的 bug 时。显然,调试工具是其中一个非常重要的工具,但在游戏开发中,另一个非常常见的工具就是自定义的调试工具&a…

数据结构知识点1

目录 一、时间复杂度和空间复杂度 1.1时间复杂度: 1.2空间复杂度: 二、装箱和拆箱 三、泛型 3.1泛型类的使用: 3.2泛型的上界: 3.3泛型方法: 一、时间复杂度和空间复杂度 1.1时间复杂度: 时间复杂…

自由学习记录(45)

顶点片元着色器(important) 1.需要在Pass渲染通道中编写着色器逻辑 2.可以使用cG或HLSL两种shader语言去编写Shader逻辑 3.代码量较多,灵活性较强,性能消耗更可控,可以实现更多渲染细节 4.适用于光照处理较少&#xf…

数据源支持远程Excel/CSV,数据集支持分组字段功能,DataEase开源BI工具v2.10.6 LTS版本发布

2025年3月17日,人人可用的开源BI工具DataEase正式发布v2.10.6 LTS版本。 这一版本的功能变动包括:数据源方面,新增支持远程Excel/CSV数据源,支持以HTTP、HTTPS、FTP协议获取远程服务器上的Excel和CSV数据文件,并且可以…

SpringBoot3使用CompletableFuture时java.util.ConcurrentModificationException异常解决方案

问题描述 在Spring Boot 3项目中,使用CompletableFuture进行异步编程时,偶发{"code":500,"msg":"java.util.ConcurrentModificationException"}异常,但代码中并未直接操作List或CopyOnWriteArrayList等集合类…

STM32__红外避障模块的使用

目录 一、红外避障模块 概述 二、直接读取OUT引脚电平 三、使用中断方式触发 一、红外避障模块 概述 引脚解释: VCC接3.3V 或 5.0VGND接开发板的GNDOUT数字量输出(0或1); 低电平时表示前方有障碍 ; 通过可调电阻调整检测距离 产品特点: …

Redis JSON 用id读取content总结(sendCommand())

Redis JSON 读取总结(方法 2 - sendCommand()) 💡 背景 在 Redis 中,我们存储了 JSON 数据,并希望通过 Jedis sendCommand() 方式读取 JSON 里的 "content" 字段。由于 jedis.jsonGet() 可能在旧版本不支持…

基于3DMax与Vray引擎的轻量级室内场景渲染实践

欢迎踏入3DMAX室内渲染的沉浸式学习之旅!在这个精心设计的实战教程中,我们将携手揭开3DMAX与Vray这对黄金搭档在打造现实室内场景时的核心奥秘。无论您是渴望入门的3D新手,还是追求极致效果的专业设计师,这里都将为您呈现从场景蓝图构建到光影魔法施加的完整技术图谱。我们…

QT Quick(C++)跨平台应用程序项目实战教程 2 — 环境搭建和项目创建

目录 引言 1. 安装Qt开发环境 1.1 下载Qt安装包 1.2 安装Qt 1.3 安装MSVC编译器 2. 创建Qt Quick项目 2.1 创建新项目 2.2 项目结构 2.3 运行项目 3. 理解项目代码 3.1 main.cpp文件 3.2 Main.qml文件 引言 在上一篇文章中,我们介绍了本教程的目标和结…