爬虫案例-爬取某站视频

文章目录

  • 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、爬取代码

python 复制代码
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、效果图



相关推荐
DogDaoDao1 天前
视频HDR技术全解析:从原理到应用的深度探索
音视频·hdr·sdr·视频渲染·hdr10·视频hdr技术标准·人眼视觉系统
IoT砖家涂拉拉1 天前
萌宠语聊新模板!借助On-App AI降噪与音频处理技术,远程安抚宠物更轻松、更安心!
人工智能·ai·app·音视频·智能家居·智能硬件·宠物
AI视觉网奇1 天前
截取视频 截取mp4 视频缩放
音视频
DogDaoDao1 天前
2025年 GitHub 主流开源视频生成模型介绍
人工智能·深度学习·开源·大模型·github·音视频·视频生成
todoitbo1 天前
docker搭建freeswitch实现点对点视频,多人视频
docker·容器·音视频·freeswitch·视频聊天
菜包eo1 天前
3种添加视频水印的加密方式,守护视频安全!
安全·音视频
WSSWWWSSW1 天前
文本生成视频的主要开源模型
开源·音视频
q567315232 天前
使用aiohttp实现高并发爬虫
javascript·css·爬虫·python
开开心心_Every2 天前
可增添功能的鼠标右键优化工具
开发语言·pdf·c#·计算机外设·电脑·音视频·symfony
SY.ZHOU2 天前
H264的NALU结构
音视频·视频编解码