PyTube3 播放列表 returns 空列表
PyTube3 Playlist returns empty list
似乎在过去 2 或 3 周的某个时候,Playlist
class 似乎对我停止了工作。我尝试了以下改编自 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=...
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)
希望这对下一个补丁有用。
似乎在过去 2 或 3 周的某个时候,Playlist
class 似乎对我停止了工作。我尝试了以下改编自 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=...
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)
希望这对下一个补丁有用。