Exception has occurred: KeyError 'streamingData'
时间: 2024-01-17 18:03:37 浏览: 264
如果你在运行示例代码时遇到了 `KeyError 'streamingData'` 错误,这可能是因为 YouTube 网站更改了其 API 返回的数据结构。你可以尝试使用更新的 `pytube` 库版本,或者修改代码以适应新的数据结构。
以下是一个修改后的示例代码:
```python
import requests
from pytube import YouTube
# 创建 YouTube 对象
yt = YouTube("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
# 获取视频信息
response = requests.get(f"https://www.youtube.com/get_video_info?video_id={yt.video_id}&el=detailpage")
parsed_response = requests.compat.urlparse.parse_qs(response.text)
# 获取视频流信息
stream_data = parsed_response.get('player_response')[0]
stream_data = json.loads(stream_data)
streaming_data = stream_data.get('streamingData')
# 选择需要下载的视频流
stream = None
if streaming_data:
formats = streaming_data.get('formats', [])
for f in formats:
if f['itag'] == 22: # 选择itag为22的视频流(720p)
stream = yt.streams.get_by_itag(22)
break
# 下载视频
if stream:
stream.download()
```
这个示例代码将使用 `requests` 库从 YouTube 获取视频信息,并选择 `itag` 值为 22 的视频流(即 720p 分辨率),然后下载该视频流。你可以根据需要更改 `itag` 值,具体可以参考YouTube支持的视频格式和质量。
阅读全文