Chr*_*sis 5 youtube python-3.x pytube
似乎在过去 2 或 3 周的某个时候,这Playlist门课似乎停止了对我的工作。我尝试了以下改编自他们 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)
Run Code Online (Sandbox Code Playgroud)
我尝试了多个公共播放列表,但它们都产生了一个空list对象。这段代码大约在 3 周前有效。另外,我正在运行 Python 3.7.6 和最新版本的 PyTube3 (9.6.4)。
有什么我做错了吗?
我查看了一下源代码,它似乎会加载 html,然后对/watch/v=...URL执行正则表达式搜索。使用的正则表达式是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)
Run Code Online (Sandbox Code Playgroud)
希望这在下一个补丁之前有用。