使用 Python 库 PyTube 下载 YouTube 视频


你了解“YouTube”吧?没错,它是在印度尤其受欢迎的著名视频分享网站 . 很多时候,你会喜欢一些视频,并尝试下载以便稍后/离线观看。然后你可能会遇到“YouTube 下载器”应用程序,它可以从 YouTube 网站下载视频。但是,大多数应用程序都有一些限制(如果你免费使用)或需要付费。但你是否想过创建我们自己的程序来下载 YouTube 视频?如果没有,你应该尝试一下,因为使用 Python 库实现起来非常简单。Python 提供了“Pytube”库来从 YouTube 下载视频。这个库允许我们从网络下载视频。

Pytube 不是标准库,所以我们需要安装它。使用 pip,安装起来很容易:

pip install pytube
Collecting pytube
Downloading https://files.pythonhosted.org/packages/af/56/c9b484e93e1f3a4ef6aefbc1e68258121831007938556daf968ab4519c9c/pytube-9.3.5-py3-none-any.whl
Installing collected packages: pytube
Successfully installed pytube-9.3.5

下载视频

正如我们在文章中看到的,使用 Pytube 下载 YouTube 视频非常简单。

所以,让我们从导入 YouTube 类开始:

from pytube import YouTube

现在让我们尝试获取视频链接。例如,选择一个你喜欢的视频:

yt = YouTube('https://www.youtube.com/watch?v=-KnAZcXzxRA')

Pytube API 使所有信息都易于访问。例如,以下是如何获取视频标题:

>>> yt.title
'Redmi Note 7 Fake 48MP Camera? Explained \U0001f525\U0001f525\U0001f525'

获取缩略图 URL:

>>> yt.thumbnail_url
'https://i.ytimg.com/vi/-KnAZcXzxRA/default.jpg'

现在,我们需要选择媒体格式。Pytube 模块提供了以下媒体格式来下载视频:

>>> yt.streams.all()
[<Stream: itag="22" mime_type="video/mp4" res="720p" fps="30fps" vcodec="avc1.64001F" acodec="mp4a.40.2">, <Stream: itag="43" mime_type="video/webm" res="360p" fps="30fps" vcodec="vp8.0" acodec="vorbis">, <Stream: itag="18" mime_type="video/mp4" res="360p" fps="30fps" vcodec="avc1.42001E" acodec="mp4a.40.2">, <Stream: itag="36" mime_type="video/3gpp" res="240p" fps="30fps" vcodec="mp4v.20.3" acodec="mp4a.40.2">, <Stream: itag="17" mime_type="video/3gpp" res="144p" fps="30fps" vcodec="mp4v.20.3" acodec="mp4a.40.2">, <Stream: itag="137" mime_type="video/mp4" res="1080p" fps="30fps" vcodec="avc1.640028">, <Stream: itag="248" mime_type="video/webm" res="1080p" fps="30fps" vcodec="vp9">, <Stream: itag="136" mime_type="video/mp4" res="720p" fps="30fps" vcodec="avc1.4d401f">, <Stream: itag="247" mime_type="video/webm" res="720p" fps="30fps" vcodec="vp9">, <Stream: itag="135" mime_type="video/mp4" res="480p" fps="30fps" vcodec="avc1.4d401f">, <Stream: itag="244" mime_type="video/webm" res="480p" fps="30fps" vcodec="vp9">, <Stream: itag="397" mime_type="video/mp4" res="None" fps="30fps" vcodec="av01.0.05M.08">, <Stream: itag="134" mime_type="video/mp4" res="360p" fps="30fps" vcodec="avc1.4d401e">, <Stream: itag="243" mime_type="video/webm" res="360p" fps="30fps" vcodec="vp9">, <Stream: itag="396" mime_type="video/mp4" res="None" fps="30fps" vcodec="av01.0.05M.08">, <Stream: itag="133" mime_type="video/mp4" res="240p" fps="30fps" vcodec="avc1.4d400d">, <Stream: itag="242" mime_type="video/webm" res="240p" fps="30fps" vcodec="vp9">, <Stream: itag="395" mime_type="video/mp4" res="None" fps="30fps" vcodec="av01.0.05M.08">, <Stream: itag="160" mime_type="video/mp4" res="144p" fps="30fps" vcodec="avc1.4d400c">, <Stream: itag="278" mime_type="video/webm" res="144p" fps="30fps" vcodec="vp9">, <Stream: itag="394" mime_type="video/mp4" res="None" fps="30fps" vcodec="av01.0.05M.08">, <Stream: itag="140" mime_type="audio/mp4" abr="128kbps" acodec="mp4a.40.2">, <Stream: itag="171" mime_type="audio/webm" abr="128kbps" acodec="vorbis">, <Stream: itag="249" mime_type="audio/webm" abr="50kbps" acodec="opus">, <Stream: itag="250" mime_type="audio/webm" abr="70kbps" acodec="opus">, <Stream: itag="251" mime_type="audio/webm" abr="160kbps" acodec="opus">]
>>>
</Stream:>

假设我们想要获取第一个流:

>>> stream = yt.streams.first()
>>> stream
<Stream: itag="22" mime_type="video/mp4" res="720p" fps="30fps" vcodec="avc1.64001F" acodec="mp4a.40.2">

视频将下载到你的目标路径:

>>> stream.download('f:/')
'f:/Redmi Note 7 Fake 48MP Camera Explained \U0001f525\U0001f525\U0001f525.mp4'

或者,你也可以将视频下载到当前工作目录:

>>> stream.download()
'C:\Python\Python361\Redmi Note 7 Fake 48MP Camera Explained \U0001f525\U0001f525\U0001f525.mp4'

现在我们看到视频已下载到我们的目标路径。

更新于:2019年7月30日

439 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告