pytube库突发RegexMatchError报错,多次重装仍无法解决
解决pytube的RegexMatchError问题
问题原因
这个错误是由于YouTube更新了加密签名的JS代码结构,导致pytube稳定版中的正则表达式^\w+\W无法匹配到目标内容,进而引发签名解密失败。
解决方案
1. 安装pytube开发版
开发版会优先修复这类适配问题,执行以下命令安装:
pip install git+https://github.com/pytube/pytube.git
2. 手动修改正则表达式(临时应急方案)
找到本地pytube库的cipher.py文件(路径:C:\Users\olimpa\AppData\Local\Programs\Python\Python311\Lib\site-packages\pytube\cipher.py),修改类初始化方法中的正则:
- 找到抛出
RegexMatchError的代码块,将原正则r"^\w+\W"替换为r"^\$*\w+\W" - 保存文件后重新运行代码
3. 修正代码中的弃用方法
原代码中的.all()方法已被弃用,建议替换为.get_all()或.first():
link = "https://www.youtube.com/watch?v=dQw4w9WgXcQ" yt = YouTube(link) # 方式1:获取所有音频流 audio_streams = yt.streams.filter(only_audio=True).get_all() audio_streams[0].download(output_path='temp', filename='audio.mp3') # 方式2:直接获取第一个音频流(更简洁) yt.streams.filter(only_audio=True).first().download(output_path='temp', filename='audio.mp3')
内容的提问来源于stack exchange,提问作者Olimpiia_ ART
相关产品推荐
相关产品推荐

