首页 > 编程问答 >即使升级 pytube 和 pip 后 pytube 也无法工作

即使升级 pytube 和 pip 后 pytube 也无法工作

时间:2024-08-03 16:41:07浏览次数:8  
标签:python youtube pytube

我试图使用 pytube 库下载 youtube 视频的音频,但它不再工作尝试更新 pytube 仍然不起作用。

from pytube import YouTube
YouTube('https://www.youtube.com/watch?v=HL9j8xuQ6Wc').streams.first().download()

我收到的错误

Traceback (most recent call last):
  File "/home/ideapoke/Documents/financial_analysis/youtube_to_audio.py", line 31, in <module>
    YouTube('https://www.youtube.com/watch?v=HL9j8xuQ6Wc').streams.first().download()
  File "/home/ideapoke/.local/lib/python3.10/site-packages/pytube/__main__.py", line 91, in __init__
    self.prefetch()
  File "/home/ideapoke/.local/lib/python3.10/site-packages/pytube/__main__.py", line 181, in prefetch
    self.vid_info_raw = request.get(self.vid_info_url)
  File "/home/ideapoke/.local/lib/python3.10/site-packages/pytube/request.py", line 36, in get
    return _execute_request(url).read().decode("utf-8")
  File "/home/ideapoke/.local/lib/python3.10/site-packages/pytube/request.py", line 24, in _execute_request
    return urlopen(request)  # nosec
  File "/usr/lib/python3.10/urllib/request.py", line 216, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python3.10/urllib/request.py", line 525, in open
    response = meth(req, response)
  File "/usr/lib/python3.10/urllib/request.py", line 634, in http_response
    response = self.parent.error(
  File "/usr/lib/python3.10/urllib/request.py", line 557, in error
    result = self._call_chain(*args)
  File "/usr/lib/python3.10/urllib/request.py", line 496, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.10/urllib/request.py", line 749, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "/usr/lib/python3.10/urllib/request.py", line 525, in open
    response = meth(req, response)
  File "/usr/lib/python3.10/urllib/request.py", line 634, in http_response
    response = self.parent.error(
  File "/usr/lib/python3.10/urllib/request.py", line 563, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.10/urllib/request.py", line 496, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.10/urllib/request.py", line 643, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 410: Gone

错误“HTTP Error 410: Gone”表示 Pytube 尝试访问的 YouTube 资源已永久移除。这通常是由于 YouTube 改变其网站结构导致的,从而破坏了 Pytube 的兼容性。

要解决此问题,请尝试以下方法:

1. 升级 Pytube 到最新版本:

有时,这个问题可以通过使用最新版本的 Pytube 来解决,该版本可能已经解决了兼容性问题。如果尚未升级到最新版本,请尝试以下操作:

bash pip install --upgrade pytube

2. 安装或升级 Youtube-DLP:

Youtube-dl 是另一个下载 Youtube 视频的库,它通常比 Pytube 更新的更快。建议使用 Youtube-dl 的分支 youtube-dlp,因为它积极维护并提供了改进的功能。

bash pip install --upgrade youtube-dlp

以下是如何使用 youtube-dlp 下载视频的示例:

```python import youtube_dlp

ydl_opts = { 'format': 'bestaudio/best', # 下载最佳音频质量 'extractaudio': True, # 仅提取音频 'audioformat': 'mp3', # 将音频转换为 mp3 格式 'outtmpl': '%(title)s.%(ext)s' # 定义输出文件名 }

with youtube_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(['https://www.youtube.com/watch?v=HL9j8xuQ6Wc']) ```

3.降级 Pytube 版本:

如果最新版本仍然存在问题,可以尝试降级到先前版本。可以通过指定版本号来安装特定版本的 Pytube:

bash pip install pytube==10.9.0 # Replace 10.9.0 with the desired version

可以尝试不同的版本,直到找到一个可行的版本。

如果在尝试这些步骤后仍然遇到问题,请提供以下附加信息,以便我进一步协助:

  • 使用的 Pytube 版本
  • 操作系统的版本
  • 是否位于代理或防火墙后面

标签:python,youtube,pytube
From: 78828000

相关文章

  • Python中定义(创建)、调用函数及返回值
    1.定义(创建)函数要调用一个函数,首先要定义它。在Python中使用关键字def来定义一个函数。函数通常由函数名、参数列表以及一系列语句组成的函数体构成的。函数定义的一般格式如下:def函数名(参数列表):函数体例如:defsayhello(): print('hello')最简单的函数:defm......
  • python用List的内建函数list.sort进行排序
    对List进行排序,Python提供了两个方法方法1用List的内建函数listsort进行排序listsort(func=None,key=None,reverse=False)Python实对List进行排序,Python提供了两个方法方法1.用List的内建函数list.sort进行排序list.sort(func=None,key=None,reverse=False)>>>list=......
  • 禁用 GIL 的 Python 3.13 非常慢
    我对python3.12.0与使用3.13.0b3标志编译的python--disable-gil进行了简单的性能测试。该程序使用ThreadPoolExecutor或ProcessPoolExecutor执行斐波那契数列的计算。引入禁用GIL的PEP文档表示,存在一些开销,主要是由于有偏差......
  • 有没有办法阻止 setUp() 为 python 测试用例中的每个测试方法启动浏览器?
    我正在练习编写Web自动化测试用例,并且编写了一些函数来测试登录、在用户主页中查找我的用户名以及测试GitHub的注销功能。然而,我通过经验和阅读了解到setUp()是在每个测试方法之前启动的,而我的问题是在每个测试方法之前它都会打开一个新的浏览器。我希望我的所有测......
  • 尝试使用Python抓取需要先登录的网站但没有成功
    我正在尝试抓取一个需要登录的网站(我的路由器GUI),但无论我做了什么,我都会反复返回登录站点的源代码,而不是成功登录后出现的页面。我做了一些阅读,并意识到我需要返回POST请求的答案。我想我找到了它们并返回了所需的值,但仍然-似乎没有任何效果。我使用https://curl.tri......
  • 给python初学者的一些建议
    写在开篇关于Python,可以这么说,这几年借着数据科学、机器学习与人工智能的东风,Python老树开新花,在风口浪尖上居高不下。Python之所以这么受大家的青睐,是因为它语言简洁,上手容易,让非计算机专业的人员也能快速上手,享受编程开发带来的便利和福利。但Python再简单,它也是一......
  • Python中15个递归函数经典案例解析
    1.阶乘计算阶乘是一个常见的递归应用,定义为n!=n*(n-1)*…*1。deffactorial(n):ifn==0:return1else:returnn*factorial(n-1)print(factorial(5))#输出:1202.斐波那契数列斐波那契数列的每一项都......
  • 如何使用 python (使用服务帐户)在应用程序脚本 Web 应用程序上触发 doGet()?
    我想从返回json的应用程序脚本Web应用程序触发doGet(e)事件。我们的网络应用程序无法在我们的组织域之外访问,因此需要服务帐户。我执行了下面的代码,但“发生错误:401客户端错误”fromgoogle.oauth2importservice_accountfromgoogle.auth.transport.requestsimpor......
  • 如何使用 BeautifulSoup python 查找选择标签的选定选项值
    我正在尝试从python中的htmlselect标签获取选定的值。好吧,当选项属性设置为selected="selected"时,它是成功的,但我试图废弃的网站具有不同的选项属性,例如:-html="""<select><optionvalue="">Pleaseselectavlalue</option><o......
  • 12:Python元组属性
    #元组tuple,元素不可被修改,不能被增加或则删除tu=(111,'alex',(11,22),[(33,44)],True,33,44,)#一般写元组的时候,最后可以加个逗号不报错print(tu)tu=(111,'alex',(11,22),[(33,44)],True,33,44,)v=tu[0]#元组索引print(v)tu=(111,'alex',(11,2......