使用pytube获取完整 Youtube playlist 列表

2022年08月04日 127点热度 1人点赞 0条评论

背景

想获取youtube 完整的播放列表 playlist,对于播放列表很长的情况。我之前的做法是使用selenium模拟网页下拉。但是这种方式到列表的最底部的几个处理不好,会丢失几条数据。因为下拉的时候没法精准的定位到最底部。后来一直在处理这个selenium的怎么实现精准的下拉到底部。技术上还有挑战。只有缩短下拉的间隔来尽可能的减少丢失数据的情况。苦苦思索没有有效的解决之道时。有时候关闭一扇窗的时候,可以选择去打开一个门。在寻求解决方案的时候发现了另外2条路。

  1. 使用Youtube data API
  2. 使用第三方库pytube

使用youtube data api的方式证明可行,但是要解决翻页问题。后来发现第三方库pytube效率更高,既然有人造好了轮子,就直接拿来用好了。

pytube 正题

pytube 是用于下载 YouTube 视频的轻量级、无依赖 Python 库(和命令行工具)。

特性

  • 支持渐进式和 DASH 流
  • 支持下载完整的播放列表
  • 支持注册 on_download_progresson_download_complete 回调
  • 提供命令行界面
  • 支持字幕轨道
  • 将字幕轨道输出为 .srt 格式(SubRip Subtitle)
  • 可获取缩略图 URL
  • 无第三方依赖

使用pytube 下载youtube playlist

from pytube import Playlist

p = Playlist('https://www.youtube.com/playlist?list=PLS1QulWo1RIaJECMeUT4LFwJ-ghgoSH6n')
print(f'Downloading: {p.title}')
print(p.video_urls)

for video in p.videos:
    print(video.title)
    print(video.length)
    print(video.video_id)
    print(video.watch_url)
    video.streams.get_by_itag(137).download()

除了下载之外,获取youbute playlist的基本信息效率还是很快,3分钟可以完成300个视频信息获取,包括视频标题,长度,视频uid,观看次数等指标。

更多的信息请参考官网

KOgoal

文章评论