Pytube出现RegexMatchError错误:get_throttling_function_name匹配失败求解决
解决Pytube的RegexMatchError下载问题
问题说明
你的代码出现pytube.exceptions.RegexMatchError: get_throttling_function_name: could not find match for multiple报错,原因是YouTube更新了反爬机制,导致pytube内置的正则表达式无法匹配新的节流函数名称。
可行解决方案
更新pytube到最新稳定版
执行命令升级:pip install --upgrade pytube官方通常会快速修复这类匹配问题,升级后大概率能解决。
手动修改正则表达式(适用于升级后仍报错的情况)
找到Python环境中pytube的安装目录(例如Lib/site-packages/pytube),打开cipher.py文件:- 定位到
get_throttling_function_name函数 - 将原有的
function_patterns列表替换为:function_patterns = [ r'a\.[a-zA-Z]\s*&&\s*\([a-z]\s*=\s*a\.get\("n"\)\)\s*&&.*?\|\|\s*([a-z]+)', r'\([a-z]\s*=\s*([a-zA-Z0-9$]+)(\[\d+\])?\([a-z]\)', ] - 保存文件后重新运行下载代码
- 定位到
安装pytube开发版
如果稳定版未及时修复,安装最新的GitHub开发分支:pip install git+https://github.com/pytube/pytube.git使用OAuth登录绕过限制
在创建YouTube对象时添加OAuth参数,触发浏览器登录验证(仅首次需要):
在你的_get_streams函数中,将YouTube实例化代码修改为:from pytube import YouTube yt = YouTube( cleaned_url, use_oauth=True, allow_oauth_cache=True )此方法可绕过大部分反爬检测。
内容的提问来源于stack exchange,提问作者AlexOAD
相关产品推荐
相关产品推荐

