如何爬取YouTube缩略图AB测试图片?解析URL差异规律
爬取YouTube AB测试缩略图的思路与方法
已观测到的URL差异
- 普通非测试缩略图:使用标准命名如
hqdefault.jpg,URL示例:https://i.ytimg.com/vi/PWirijQkH4M/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBKdc7hUQ5L2mS8kOfFpmPfex5Ukw - AB测试缩略图:使用带
custom标识的命名如hq720_custom_1.jpg,URL示例:https://i9.ytimg.com/vi/PWirijQkH4M/hq720_custom_1.jpg?sqp=CNCcxbQG-oaymwE2CNAFEJQDSFXyq4qpAygIARUAAIhCGAFwAcABBvABAfgB_gmAAtAFigIMCAAQARh_ICgoEzAP&rs=AOn4CLCE9jpzpLAvr53v8BPXtWuD4zYfnQ
关于命名规律的说明
hq720_custom_N.jpg 中的N(如示例里的1)是YouTube动态分配的测试组标识,没有固定可推导的规律。这类命名是YouTube内部用于区分不同AB测试变体的随机标识,无法通过拼接固定格式的URL获取所有测试缩略图。
可行的爬取方法
解析视频页面的
ytInitialData
打开目标视频页面后,在HTML源码中找到包含ytInitialData的<script>标签,这个脚本块包含了视频的所有核心初始化数据,其中就包含AB测试缩略图的完整URL。定位缩略图数据节点
在ytInitialData中,可通过以下路径查找:- 进入
contents.twoColumnWatchNextResults.results.results.contents - 找到
videoPrimaryInfoRenderer或thumbnailOverlayToggleButtonRenderer相关节点 - 其中的
thumbnail.thumbnails数组会列出所有可用的缩略图,包括AB测试变体
- 进入
处理CDN域名差异
AB测试缩略图可能使用i.ytimg.com、i9.ytimg.com等不同CDN域名,但核心路径vi/[视频ID]/[自定义缩略图文件名]是统一的,无需额外处理域名差异,直接提取完整URL即可。
注意事项
- YouTube的AB测试配置是动态更新的,同一个视频的测试组可能随时调整,因此必须实时从页面拉取数据,不能依赖缓存的URL。
- 不要尝试通过猜测文件名(如将
_1改为_2)获取测试缩略图,因为测试组数量和标识是随机分配的,猜测大概率无效。
内容的提问来源于stack exchange,提问作者Alex Fruzenshtein
相关产品推荐
相关产品推荐

