You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何下载含400个视频的YouTube播放列表?(基于Pytube及开源代码)

解决Pytube无法获取超过100个视频的YouTube播放列表问题

YouTube播放列表默认仅加载前100个视频,旧版本Pytube的Playlist类存在无法自动翻页获取剩余视频的限制,结合你使用的代码,可通过以下步骤解决:

1. 升级Pytube到最新版本

旧版本Pytube存在播放列表分页获取的bug,先执行升级命令:

pip install --upgrade pytube

2. 修改代码以获取全部视频

原代码可能仅遍历了前100个视频,替换为以下逻辑即可自动获取所有视频链接并下载:

from pytube import Playlist, YouTube
import os
import time

def download_full_playlist(playlist_url, save_dir):
    # 创建保存目录
    if not os.path.exists(save_dir):
        os.makedirs(save_dir)
    
    playlist = Playlist(playlist_url)
    # 自动获取所有视频URL(处理分页逻辑)
    all_videos = playlist.video_urls
    total_videos = len(all_videos)
    
    print(f"检测到播放列表共 {total_videos} 个视频,开始下载")
    
    for count, video_url in enumerate(all_videos, 1):
        try:
            video = YouTube(video_url)
            # 选择最高分辨率的可下载流
            stream = video.streams.get_highest_resolution()
            print(f"[{count}/{total_videos}] 正在下载: {video.title}")
            stream.download(output_path=save_dir)
            print(f"[{count}/{total_videos}] 下载完成: {video.title}\n")
            # 添加延迟避免触发反爬
            time.sleep(1)
        except Exception as e:
            print(f"[{count}/{total_videos}] 下载失败: {video.title} - 错误信息: {str(e)}\n")

# 替换为你的播放列表URL和保存路径
if __name__ == "__main__":
    target_playlist = "https://www.youtube.com/playlist?list=YOUR_PLAYLIST_ID"
    download_directory = "./youtube_downloads"
    download_full_playlist(target_playlist, download_directory)

关键改动说明:

  • 使用playlist.video_urls替代原代码中可能的有限遍历,该属性会自动处理YouTube的分页加载逻辑,获取所有视频链接
  • 增加异常处理,单个视频下载失败不会中断整个播放列表的下载流程
  • 添加time.sleep(1)降低请求频率,避免触发YouTube的反爬限制
  • 增加进度计数和状态提示,方便跟踪下载进度

额外注意事项

  • 若仍出现视频获取不全的情况,可适当延长延迟时间(如time.sleep(2))
  • 部分受版权保护的视频无法通过Pytube下载,脚本会自动跳过并提示错误
  • 确保网络连接稳定,避免中途断连导致下载中断

内容的提问来源于stack exchange,提问作者Shikar2314

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 13:15:18