pytube出现RegexMatchError匹配失败错误,求解决方案
关于pytube的RegexMatchError问题求助
运行代码时触发pytube.exceptions.RegexMatchError,错误提示无法匹配正则表达式(?:v=|\/)([0-9A-Za-z_-]{11}).*。使用PySimpleGUI搭建GUI,确认输入的URL正确,且该代码在其他项目中可正常运行,无法定位报错原因,寻求技术帮助。
代码片段
def downlad_playlist(listurl, destination, only_audio = True): list_url = Playlist(listurl) print(f'Downloading: {list_url.title}') for url in list_url.video_urls: vid_url = YouTube(url) window["-DOWNLOAD_TEXT-"].update("Downloading: " + vid_url.title) window.refresh() vid_url.register_on_progress_callback(on_progress) # try: video = vid_url.streams.filter(only_audio=True).first() out_file = video.download(output_path=destination)
完整错误信息
Traceback (most recent call last): File "C:\Users\gamer\Desktop\yt-py\yt_downloaderV3.py", line 111, in <module> download_video(values["-YOUTUBE_URL-"], values["-SAVE_LOCATION-"]) File "C:\Users\gamer\Desktop\yt-py\yt_downloaderV3.py", line 36, in download_video yt = YouTube(url) ^^^^^^^^^^^^ File "C:\Users\gamer\Desktop\yt-py\venv\Lib\site-packages\pytube\__main__.py", line 71, in __init__ self.video_id = extract.video_id(url) ^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\gamer\Desktop\yt-py\venv\Lib\site-packages\pytube\extract.py", line 133, in video_id return regex_search(r"(?:v=|\/)([0-9A-Za-z_-]{11}).*", url, group=1) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\gamer\Desktop\yt-py\venv\Lib\site-packages\pytube\helpers.py", line 129, in regex_search raise RegexMatchError(caller="regex_search", pattern=pattern) pytube.exceptions.RegexMatchError: regex_search: could not find match for (?:v=|\/)([0-9A-Za-z_-]{11}).*
排查方向
- 检查Playlist返回的video_urls内容:在循环中打印每个
url,确认是否存在格式异常的链接(比如短链接、带多余参数或隐藏字符的URL)。 - 更新pytube版本:执行
pip install --upgrade pytube,旧版本可能因YouTube页面结构更新导致正则匹配失效。 - 手动处理URL:若发现异常URL,手动提取11位video_id,构造标准URL(如
https://www.youtube.com/watch?v={video_id})后传入YouTube类。 - 清理GUI输入的URL:在传入Playlist前对
listurl执行strip(),去除可能存在的空格、换行符等隐藏字符。
内容的提问来源于stack exchange,提问作者StrangePigeon79
相关产品推荐
相关产品推荐

