如何通过API提取YouTube视频的Most Replayed数据
可行方案
YouTube官方Data API v3 目前没有提供 Most Replayed(即视频活动热度图)数据的公开接口,但你可以通过解析视频页公开返回的播放器数据拿到完整的热度曲线,以下是可落地的实现方式:
直接解析页面内嵌数据
带Most Replayed标识的视频,加载时会把全量热度数据存在页面全局变量ytInitialPlayerResponse里,不需要申请API密钥就能提取:
- 操作步骤:
- 给请求带上常规浏览器的User-Agent,拉取目标视频的HTML源码,不需要登录账号
- 用正则匹配出页面中
var ytInitialPlayerResponse =后挂载的JSON对象,做反序列化 - 在JSON的
streamingData节点下,遍历formats、adaptiveFormats数组,找到带heatMarkers字段的条目,就是完整的热度数据
- 字段含义:
startTimeMillis、endTimeMillis:对应热度统计片段的起止时间,单位毫秒heatMarkerIntensityScoreNormalized:0-1区间的归一化热度值,数值越高代表该片段被用户重播的次数越多,和前端展示的热度峰值完全对应
借助现成开源工具
不想自己写解析逻辑的话,可以直接用已经封装好该能力的开源库:
- Python环境:用
yt-dlp拉取视频元数据时加上--write-info-json参数,导出的元数据JSON里直接带heatmarks字段;也可以用持续维护的pytube分支直接调用元数据接口获取 - Node.js环境:用
youtubei.js调用视频详情接口,返回结果里已经做了结构化处理,直接就能拿到Most Replayed数据
踩坑提示
- 不是所有视频都有该数据:只有播放量达到平台统计门槛、公开可见、创作者没有关闭统计功能的视频才会生成Most Replayed曲线,这类视频的返回结构里找不到
heatMarkers字段 - YouTube会不定期调整页面内嵌数据的字段层级,写解析逻辑的时候一定要加字段非空校验,避免官方结构迭代导致代码崩溃
- 该方式属于解析公开页面数据,使用时请遵守YouTube服务条款,不要用于高频批量爬取的商用场景
功能参考效果:显示Most Replayed数据的YouTube视频界面示例
内容的提问来源于stack exchange,提问作者prodohsamuel
相关产品推荐
相关产品推荐

