You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python获取YouTube频道数据时KeyError与IndexError错误如何修复

问题排查与修复方案

错误1:IndexError索引越界

触发原因:你在for i in range(len(allVideos))循环内主动写了i += 1,而range(len(allVideos))生成的i默认从0遍历到len(allVideos)-1,额外加1后最后一次循环的i会等于len(allVideos),超过了列表的最大合法索引(列表索引从0开始,最大索引为长度减1),直接触发越界。
修复方式:直接删除循环内的i += 1行即可。

错误2:KeyError字段缺失

触发原因:你的判断正确,部分视频关闭评论、点赞、点踩功能后,YouTube API返回的statistics节点不会携带对应字段,直接用['key']方式取值就会抛出KeyError。
修复方式:用字典自带的get()方法取值,同时指定字段不存在时的默认值即可。

修复后完整代码

for i in range(len(allVideos)):
    title.append(allVideos[i]['snippet']['title'])
    publishedDate.append(allVideos[i]['snippet']['publishedAt'])
    video_description.append(allVideos[i]['snippet']['description'])
    # 用get方法取值,字段不存在时默认返回0再转int
    liked.append(int(stats[i]['statistics'].get('likeCount', 0)))
    disliked.append(int(stats[i]['statistics'].get('dislikeCount', 0)))
    views.append(int(stats[i]['statistics'].get('viewCount', 0)))
    comment.append(int(stats[i]['statistics'].get('commentCount', 0)))
    videoid.append(allVideos[i]['snippet']['resourceId']['videoId'])

可选优化

如果存在allVideos和stats长度不一致的情况,可以在循环第一行加越界判断:

if i >= len(stats):
    break

内容的提问来源于stack exchange,提问作者chiranjeevi h chiru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 15:24:03