使用pytube下载YouTube视频遇正则相关错误求解决
解决pytube正则表达式匹配错误的方案
方案一:手动修复pytube核心文件
YouTube页面结构更新会导致pytube原有正则表达式失效,直接修改库文件即可解决:
- 找到Python环境中pytube的安装目录(比如
Lib\site-packages\pytube) - 打开
extract.py文件,找到player_response_regex的定义:
将其替换为:player_response_regex = re.compile( r"ytInitialPlayerResponse\s*=\s*({.*?});\s*var\s+" )player_response_regex = re.compile( r"ytInitialPlayerResponse\s*=\s*({.*?});\s*</script>" ) - 再打开
cipher.py文件,找到var_regex:
替换为:var_regex = re.compile(r"var\s+([a-zA-Z0-9_$]+)\s*=\s*function\(\)\s*\{" )var_regex = re.compile(r"var\s+([a-zA-Z0-9_$]+)\s*=\s*\(function\(\)\s*\{" )
方案二:安装修复版pytube
如果不想手动修改,直接安装官方最新修复分支:
pip uninstall -y pytube pip install git+https://github.com/pytube/pytube.git@master
方案三:替换为更稳定的yt-dlp
pytube对YouTube的更新适配较慢,换用yt-dlp能避免这类问题:
- 安装yt-dlp:
pip install yt-dlp - 替换你的代码为:
import yt_dlp link = "https://www.youtube.com/watch?v=vEQ8CXFWLZU&t=475s&ab_channel=InternetMadeCoder" with yt_dlp.YoutubeDL({}) as ydl: video_info = ydl.extract_info(link, download=False) print(video_info['title'])
内容的提问来源于stack exchange,提问作者Jonathan Yang
相关产品推荐
相关产品推荐

