作者wavek (壞貓咪)
看板Python
標題[問題] pytube RegexMatchError
時間Mon Nov 12 20:33:10 2018
參照網路上的教學試試用pytube庫下載影片
不過開頭就出問題惹QQ
使用的系統為win7 64位元
IDE為PyCharm 並且連接到Anaconda 3 (python 3.7)
Pytube為9.3.51版本
我的Code如下
===
from pytube import YouTube
link = "
https://www.youtube.com/watch?v=Ik-RsDGPI5Y"
yt = YouTube(link)
print(yt.get_videos())
print(yt.filename)
yt.set_filename('Dancing')
print(yt.filter('flv'))
print(yt.filter('mp4')[-1])
print(yt.filter(resolution='480p'))
video = yt.get('mp4','720p')
video.download('E:\\_sublime\\scrapy\\hey\\')
===
https://imgur.com/g6E1LwR
錯誤如下
===
Traceback (most recent call last):
File "E:/_sublime/scrapy/hey/venv/ytvideo.py", line 5, in <module>
yt = YouTube(link)
File
"C:\Users\Administrator\Anaconda3\lib\site-packages\pytube\__main__.py", line
88, in __init__
self.prefetch_init()
File
"C:\Users\Administrator\Anaconda3\lib\site-packages\pytube\__main__.py", line
97, in prefetch_init
self.init()
File
"C:\Users\Administrator\Anaconda3\lib\site-packages\pytube\__main__.py", line
133, in init
mixins.apply_signature(self.player_config_args, fmt, self.js)
File "C:\Users\Administrator\Anaconda3\lib\site-packages\pytube\mixins.py",
line 49, in apply_signature
signature = cipher.get_signature(js, stream['s'])
File "C:\Users\Administrator\Anaconda3\lib\site-packages\pytube\cipher.py",
line 250, in get_signature
tplan = get_transform_plan(js)
File "C:\Users\Administrator\Anaconda3\lib\site-packages\pytube\cipher.py",
line 69, in get_transform_plan
name = re.escape(get_initial_function_name(js))
File "C:\Users\Administrator\Anaconda3\lib\site-packages\pytube\cipher.py",
line 45, in get_initial_function_name
return regex_search(pattern, js, group=1)
File
"C:\Users\Administrator\Anaconda3\lib\site-packages\pytube\helpers.py", line
41, in regex_search
.format(pattern=p),
pytube.exceptions.RegexMatchError: regex pattern
(yt\.akamaized\.net/\)\s*\|\|\s*.*?\s*c\s*&&\s*d\.set\([^,]+\s*,\s*(?P<sig>[a-zA-Z0-9$]+)\()
had zero matches
===
https://imgur.com/HcRIpye
有在GitHub跟STACK OVERFLOW看到幾個人有類似問題
不過都沒有解答
所以來這邊求助熱心的高手!
--
台北的夏天 應該會有一場雨
我想起自由 和你的氣味
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.156.219
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1542025993.A.F2A.html
→ s860134: 看了一下那是他寫的 pattern 11/13 00:45
甚麼東西XD 不懂
→ s860134: 應該是 youtube 的資料格式有變,他爬失敗惹 11/14 00:58
→ s860134: 你先跳過他的範例做別的吧@@ 11/14 00:59
→ dpes10087: pytube ->cipher.py ->get_initial_function_name(js) 11/14 10:53
→ dpes10087: pattern= r'\bc\s*&&\s*d\.set\([^,]+\s*,\s*\([^)]*\) 11/14 10:55
→ dpes10087: \s*\(\s*(?P<sig>[a-zA-Z0-9$]+)\(' 11/14 10:55
→ dpes10087: 再對cipher.py重新編譯一次 11/14 10:56
→ dpes10087: 你的Code範例是舊的,很多function都改掉了。 11/14 10:58
謝謝 解決了!
範例好像是舊的 雖然我看的那篇教學文是2017年5月的..
不過後來有找到從PiPy網站看pytube library
裡面的function都不太一樣了
幾乎都是加上了一個streams
像是
yt.streams.filter(only_audio=True).all()
這樣
目前可以用python抓youtube影片了
謝謝!!!
※ 編輯: wavek (1.169.156.219), 11/14/2018 21:21:55