爬虫下载视频

复制代码
# 下载工具
pip install yt-dlp
pip install browser-cookie3 pycryptodomex

# 检查安装
yt-dlp --version
javascript 复制代码
打开  https://www.gyan.dev/ffmpeg/builds/
下载 ffmpeg-release-essentials.zip
解压,把里面的 bin\ffmpeg.exe 所在目录(如 C:\ffmpeg\bin)加入系统 PATH
重启 CMD / IDE
验证:ffmpeg -version

配置环境变量

检擦安装

建议优化改成批量下载,使用线程程

java 复制代码
package com.ldj.springboot.importbean.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;

/**
 * User: ldj
 * Date: 2026/1/24
 * Time: 11:32
 * Description: No Description
 */
public class BilibiliDownloader {

    public static void main(String[] args) {
        // 视频链接
        String videoUrl = "https://www.bilibili.com/video/BV1SS421K7yX?spm_id_from=333.788.recommend_more_video.0&trackid=web_related_0.router-related-2206146-rj2c7.1769236186300.334&vd_source=fe0294a30f1e450793d2ae5e66c7975b";
        // cookie文件
        String cookiesPath = "src/main/resources/cookie/cookies.txt";
        // 下载目录
        String outputDir = "src/main/resources/video";
        // 文件名格式
        String outputFileName = "%(title)s.%(ext)s";

        /**
         * 先安装 pip install yt-dlp
         * 使用yt-dlp 工具下载
         * -o: 输出路径
         * -f 选择分辨率(会自动合并音视频)
         * --merge-output-format mp4: 合并后的格式
         * --no-overwrites: 不覆盖已有文件
         * 分片失败无限重试
         * 同时下载 8 个分片(默认是 1)
         */
        ProcessBuilder pb = new ProcessBuilder(
                "yt-dlp",
                "--cookies", cookiesPath,
                "-o", outputDir + File.separator + outputFileName,
                "-f", "30080+30280/30064+30280/b",
                "--merge-output-format", "mp4",
                "--no-overwrites",
                "--fragment-retries", "infinite",
                "--concurrent-fragments", "8",
                videoUrl
        );

        // 设置工作目录
        pb.directory(new File("."));

        try {
            System.out.println("开始下载任务...");
            System.out.println("执行命令: " + String.join(" ", pb.command()));
            // 启动进程
            Process process = pb.start();
            // 读取命令行输出(用于实时显示下载进度)
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            // 等待进程结束并获取结果
            int exitCode = process.waitFor();
            System.out.println("\n任务结束!状态码: " + outputDir);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
相关推荐
阿尔的代码屋2 小时前
[大模型实战 07] 基于 LlamaIndex ReAct 框架手搓全自动博客监控 Agent
人工智能·python
AI探索者19 小时前
LangGraph StateGraph 实战:状态机聊天机器人构建指南
python
AI探索者19 小时前
LangGraph 入门:构建带记忆功能的天气查询 Agent
python
FishCoderh21 小时前
Python自动化办公实战:批量重命名文件,告别手动操作
python
躺平大鹅21 小时前
Python函数入门详解(定义+调用+参数)
python
曲幽1 天前
我用FastAPI接ollama大模型,差点被asyncio整崩溃(附对话窗口实战)
python·fastapi·web·async·httpx·asyncio·ollama
两万五千个小时1 天前
落地实现 Anthropic Multi-Agent Research System
人工智能·python·架构
哈里谢顿1 天前
Python 高并发服务限流终极方案:从原理到生产落地(2026 实战指南)
python
用户8356290780512 天前
无需 Office:Python 批量转换 PPT 为图片
后端·python
markfeng82 天前
Python+Django+H5+MySQL项目搭建
python·django