看板 Python 關於我們 聯絡資訊
參照網路上的教學試試用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 貼101檢查吧 https://regex101.com/ 11/13 00:32
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