You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pytube15.0.0下载YouTube音频遇RegexMatchError求助

解决方案与替代方案

修复pytube的问题

1. 升级pytube到最新版本

你的pytube版本15.0.0较旧,YouTube页面结构和反爬逻辑频繁更新,新版本会针对性修复正则匹配类问题。执行以下命令升级:

pip install --upgrade pytube

2. 替换自定义搜索逻辑为pytube内置功能

你通过urllib和正则提取视频ID的方式易受页面结构变动影响,改用pytube自带的YouTubeSearch类更稳定:

from pytube import YouTube, YouTubeSearch

# 构造搜索关键词
search_kw = f"{tracks[i+1]['Artist']} {tracks[i+1]['Track Title']}"
print(f"Preparing {tracks[i+1]['Artist']}-{tracks[i+1]['Track Title']}")

# 用pytube内置搜索获取首个结果
results = YouTubeSearch(search_kw, max_results=1).to_dict()
if results:
    song_yt_link = f"https://www.youtube.com{results[0]['url_suffix']}"
    selected_video = YouTube(song_yt_link)
    
    output_path = '/dataset/'
    # 直接筛选纯音频流(比mp4视频流更适合音频下载需求)
    audio = selected_video.streams.filter(only_audio=True).first()
    audio.download(output_path=output_path)

3. 手动修复cipher.py的正则(升级后仍报错时)

若升级版本后问题依旧,找到pytube安装目录下的cipher.py,修改get_throttling_function_name函数中的正则规则:
将原有匹配模式替换为:

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$]+)\([a-z]\)',
]

保存后重新运行代码。

替代模块推荐

如果pytube始终无法解决问题,以下模块维护更活跃、兼容性更强:

1. yt-dlp

这是youtube-dl的活跃分支,对YouTube反爬机制适配更好,功能更全面。示例代码:

import yt_dlp

search_kw = f"{tracks[i+1]['Artist']} {tracks[i+1]['Track Title']}"
print(f"Preparing {tracks[i+1]['Artist']}-{tracks[i+1]['Track Title']}")

# 配置下载参数:获取最佳音频并转为MP3格式
ydl_opts = {
    'format': 'bestaudio/best',
    'outtmpl': '/dataset/%(artist)s-%(title)s.%(ext)s',
    'postprocessors': [{
        'key': 'FFmpegExtractAudio',
        'preferredcodec': 'mp3',
        'preferredquality': '192',
    }],
}

# 直接搜索并下载(也可传入具体视频链接)
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download([f"ytsearch1:{search_kw}"])

安装命令:

pip install yt-dlp

2. youtube-dl

经典的YouTube下载工具,维护频率略低于yt-dlp,可作为备选:
安装命令:

pip install youtube-dl

用法与yt-dlp类似,部分参数存在差异,可参考官方文档调整。

内容的提问来源于stack exchange,提问作者Anthony Reid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:37:00