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

爬虫案例-爬取某站视频

文章目录

  • 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、效果图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

相关文章:

  • Lua 的 Neovim 常用配置
  • Vue3 组件通信 $refs $parent
  • 【React】使用Swiper报错`Swiper` needs at least one child
  • 前端会话控制技术:cookie/session/token
  • 特斯拉Optimus 2.0:多模态感知与强化学习引领家庭场景变革
  • 【递归、搜索和回溯算法】专题三 :穷举VS暴搜VS深搜VS回溯VS剪枝
  • WebGL图形编程实战【2】:动态着色 × 纹理贴图技术揭秘
  • 学习Flutter:搭建第一个 Flutter 应用
  • StarRocks 主键(Primary Key)深度解析
  • MATLAB+Arduino控制小车直行+转向
  • 竞赛团队招募系统----山东大学web课程设计
  • cool-admin-midway 使用腾讯云cos上传图片
  • SAP SD学习笔记35 - ATP(可用性检查)的各种Pattern
  • NLP高频面试题(十二)——Lora微调的原理、什么是Qlora
  • AWS NoSQL解决方案全景图
  • 【MySQL笔记】数据类型
  • 外设的中断控制
  • java设计模式之代理模式《赛博园丁的代理觉醒》
  • Mybatis注解的基础操作——02
  • 基于STM32单片机的智能手环/音乐播放/语音识别
  • 沈阳卫健委通报“健康证”办理乱象:涉事医院已被立案查处
  • 学者的“好运气”:读本尼迪克特·安德森《椰壳碗外的人生》
  • 海北州委常委、常务副州长桑本履新青海省供销社理事会主任
  • 5年建成强化城市核心功能新引擎,上海北外滩“风景文化都是顶流”
  • 泽连斯基:乌克兰已做好与俄罗斯举行会谈的准备
  • 《瞭望》周刊社原总编辑、党委书记姬斌逝世,享年67岁