如何通过YouTube V3 API获取YouTube视频的videoId?
问题分析与解决方法
错误原因
你用requests.get(api_url).text拿到的是JSON格式的字符串,不是Python可直接操作的字典对象,所以用["videoId"]这种字符串索引去访问自然会报错——字符串只能用整数索引取字符,不能用键名。
修正方案
直接用requests提供的.json()方法,它会自动把API返回的JSON字符串解析成Python字典,之后就能按键名层级访问数据了。另外要注意YouTube Search API的返回结构:videoId嵌套在items数组的id对象里,得按层级取。
修正后的代码
import requests channel_id = "UCfjTZZ3iqy24oSg-bmi2waw" api_key = "你的API密钥" # 记得填入有效API密钥 api_url = f"https://www.googleapis.com/youtube/v3/search?part=snippet&channelId={channel_id}&maxResults=1&order=date&type=video&key={api_key}" # 用.json()解析响应为字典 response = requests.get(api_url).json() # 按API返回结构层级获取videoId if response.get("items"): # 先判断有没有返回结果,避免索引报错 video_id = response["items"][0]["id"]["videoId"] print(video_id) else: print("未获取到视频数据")
补充说明
- 一定要确保
api_key填入有效的YouTube Data API密钥,不然会返回权限错误。 - 加
if response.get("items")的判断是为了防止API返回空数据时,访问items[0]触发索引越界错误。
内容的提问来源于stack exchange,提问作者xJo
相关产品推荐
相关产品推荐

