如何下载含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
相关产品推荐
相关产品推荐

