我想用 Python 下载 YouTube 视频。我用Python尝试过opencv,但总是有问题。我正在尝试使用 pytube3 和 Python 3。我尝试了这个程序(我在堆栈溢出):
from pytube import YouTube
YouTube('http://youtube.com/watch?v=9bZkp7q19f0').streams.first().download()
但它因“HTTP 错误 410”错误而失败。当我运行各种 pytube 程序时,我不断收到“HTTP Error 410”。我更改了 URL 并在浏览器中测试了 URL。当我运行 Python 程序来下载视频时,没有任何效果。
我正在尝试运行这个程序(因为我发现它here):
from pytube import YouTube
try:
yt_obj = YouTube('https://www.youtube.com/watch?v=DkU9WFj8sYo')
print(f'Video Title is {yt_obj.title}')
print(f'Video Length is {yt_obj.length} seconds')
print(f'Video Description is {yt_obj.description}')
print(f'Video Rating is {yt_obj.rating}')
print(f'Video Views Count is {yt_obj.views}')
print(f'Video Author is {yt_obj.author}')
except Exception as e:
print(e)
我懂了:
HTTP 错误 410:Gone Traceback(最近一次调用最后一次):文件“e.py”,
9号线,在
yt_obj = YouTube(url) 文件“/home/jdoe/path_dir/lib/python3.8/site-packages/pytube/main.py",
第 91 行,在initself.prefetch() 文件“/home/jdoe/path_dir/lib/python3.8/site-packages/pytube/main.py",
第 181 行,预取中
self.vid_info_raw = request.get(self.vid_info_url) 文件“/home/jdoe/path_dir/lib/python3.8/site-packages/pytube/request.py”,
第 36 行,在 get 中
return _execute_request(url).read().decode("utf-8") 文件 "/home/jdoe/path_dir/lib/python3.8/site-packages/pytube/request.py",
第 24 行,在 _execute_request 中
return urlopen(request) # nosec 文件“/usr/lib/python3.8/urllib/request.py”,第 222 行,在 urlopen 中
return opener.open(url, data, timeout) 文件“/usr/lib/python3.8/urllib/request.py”,第 531 行,打开
响应= meth(req,响应)文件“/usr/lib/python3.8/urllib/request.py”,第640行,在http_response中
response = self.parent.error( 文件“/usr/lib/python3.8/urllib/request.py”,第 563 行,错误
结果 = self._call_chain(*args) 文件“/usr/lib/python3.8/urllib/request.py”,第 502 行,在 _call_chain
result = func(*args) 文件“/usr/lib/python3.8/urllib/request.py”,第 755 行,http_error_302
return self.parent.open(new, timeout=req.timeout) 文件“/usr/lib/python3.8/urllib/request.py”,第 531 行,打开
响应= meth(req,响应)文件“/usr/lib/python3.8/urllib/request.py”,第640行,在http_response中
response = self.parent.error( 文件“/usr/lib/python3.8/urllib/request.py”,第 569 行,错误
return self._call_chain(*args) 文件“/usr/lib/python3.8/urllib/request.py”,第 502 行,在 _call_chain
结果 = func(*args) 文件“/usr/lib/python3.8/urllib/request.py”,第 649 行,位于
http_错误_默认值
引发 HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP 错误 410:
走了
在处理上述异常的过程中,又出现了一个异常:
回溯(最近一次调用):文件“e.py”,第 14 行,位于
raise Exception('发生了一些异常。') 异常:发生了一些异常。
我的研究表明 410 错误涉及到一个 URL 被找到但随后被移动。由于问题发生在不同的 YouTube 链接和不同的程序上,我不知所措。使用 pytube 时如何避免收到错误 410 消息?
有一个pytube3 中的错误这会导致 410 错误。该问题链接了一个修复程序,似乎可以解决该问题。如果我安装修补版本:
pip install git+https://github.com/Zeecka/pytube@fix_1060#egg=pytube
然后我可以获取有关 YouTube 视频的信息而不会出现该错误:
>>> import pytube
>>> yt = pytube.YouTube('https://www.youtube.com/watch?v=DkU9WFj8sYo')
>>> yt.title
'Space Ranger Video Game using FXGL and JavaFX'
该修复已作为拉取请求。通过阅读讨论,看起来可能仍然存在一些未解决的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)