python-3.x - PyTube3 播放列表返回空列表

标签 python-3.x youtube pytube

似乎在过去 2 或 3 周的某个时间,Playlist类似乎已经停止为我工作。我尝试了以下改编自 their GitHub 的代码片段:

from pytube import Playlist
playlist = Playlist("https://www.youtube.com/playlist?list=PLynhp4cZEpTbRs_PYISQ8v_uwO0_mDg_X")

print(len(playlist.video_urls))
for url in playlist.video_urls:
    print(url)
我尝试了多个公共(public)播放列表,但它们都产生了一个空的 list目的。这段代码大约在 3 周前工作。另外,我正在运行 Python 3.7.6 和最新版本的 PyTube3 (9.6.4)。
有什么我做错了吗?

最佳答案

我稍微查看了一下源代码,它似乎会加载 html,然后对 /watch/v=... 执行正则表达式搜索。网址。使用的正则表达式是 href=\"(/watch\?v=[\w-]*)但它找不到任何匹配项,因为 YouTube 必须更新了他们的 html。他们现在以 JSON 对象的形式发送监视 URL。所以我们应该寻找它。
这是可行的:

from pytube import Playlist
import re

playlist = Playlist("https://www.youtube.com/playlist?list=PLynhp4cZEpTbRs_PYISQ8v_uwO0_mDg_X")
playlist._video_regex = re.compile(r"\"url\":\"(/watch\?v=[\w-]*)")

print(len(playlist.video_urls))
for url in playlist.video_urls:
    print(url)
希望这在下一个补丁之前有用。

关于python-3.x - PyTube3 播放列表返回空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62661930/

相关文章:

python - 模拟抛硬币实验 - RealPython

python - 使用 pytube 库从 csv 下载 youtube 链接

python - 如何添加进度条?

python - 在 Pytube 中获取 Http 错误 404。这是什么原因?

python - 用特殊字符过滤 df

python-3.x - 多柱或 block 熔化然后旋转?

Python 3.6 类型 : Using variable before assignment

Youtube Data API v3 PlaylistItems 更新不适用于稍后观看播放列表

php - 获取 channel 的当前 CMS 状态

iPhone SDK - 嵌入 YouTube 视频的 UIWebView