爬虫下载视频

复制代码
# 下载工具
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();
        }
    }
}
相关推荐
2603_965148117 分钟前
eBay商品数据API:寻找海外仓与价格洼地
大数据·人工智能·windows·python·microsoft
2601_9563198815 分钟前
TqSdk Tick 数据适合做什么?获取方法与使用边界
人工智能·python
苏灿烤鱼1 小时前
把 Agent 做成一家公司,真比通用提示词好用吗?
python·agent·shell
北斗落凡尘10 小时前
LangGraph 入门实战(2)
python·langchain
ttod_qzstudio11 小时前
Java 常用语法极简通关(五):类与对象——字段、方法、构造器、this 与 static
java·开发语言·python
jufeng130712 小时前
【系列:手搓自主 AI Agent:Hermes 架构原理剖析 · 第 1 篇】
人工智能·python·架构·agent
月光船幽幽13 小时前
影子模式下保护 logits 不被修改
人工智能·python·算法
_oP_i15 小时前
python 后缀 mjs文件
开发语言·python
北斗落凡尘15 小时前
如何使用LangGraph(1)
python·langchain