如何截取 YouTube 页面 (html) 的快照?

如何截取 YouTube 页面 (html) 的快照?

我想拍摄 YouTube 页面的快照(例如 youtube.com/feed/trending)

以下是我的尝试:

wget https://www.youtube.com/feed/trending --convert-links -E

问题出在视频缩略图上。Youtube 似乎提供空的 gif 缩略图(后来被真正的缩略图替换了?不确定)。在热门视频中,我看到了前 6 个视频的缩略图,但其他视频都是灰色/缺失的。这与 javascript 有关吗?有人知道一种可靠的网页快照方法,适用于像 youtube 这样的复杂页面吗?

谢谢

答案1

我不知道你用这个做什么,但正确的方法是页面内容通过Youtube 接口。 你可以按趋势搜索。它处理漂亮的 JSON 响应,您可以根据自己的喜好进行调整。

他们的页面本身看起来好像在使用 API,或者可能是私有版本,但数据就在那里,只是被延迟了。以下是其中一张图片:

<img width="196" onload=";__ytRIL(this)" alt="" height="110" src="/yts/img/pixel-vfl3z5WfW.gif" data-thumb="https://i.ytimg.com/vi/Rqa9ph0cWSA/hqdefault.jpg?custom=true&amp;w=196&amp;h=110&amp;stc=true&amp;jpg444=true&amp;jpgq=90&amp;sp=68&amp;sigh=Vt5qpPXMxoaOiEG4ohSszdhmMJU" data-ytimg="1" >

通常情况下您可以通过简单的字符串替换来修复此图像,但 Youtube 会在刷新之间更改属性的顺序。您需要处理 HTML 并将属性转换data-thumbsrc(并删除加载更多标签)。然后您需要下载这些(因为wget没有)然后转换链接。

但这比使用第一段中的 API 的工作量要大得多。
更不用说你所做的一切都违反了他们的服务条款。

因此,我对此的回答与简短的回答相同:使用 API。


如果你真的决心以错误的方式做这件事,你操纵真实的浏览器,让它加载页面然后转储 DOM(它实际渲染的是什么)。

它实际上相当简洁,并且确实可用于测试自动化和生成页面截图,但您仍然需要通过某些东西来转换链接并下载资产。现在你可能已经厌倦了我这么说,但只需使用 API 即可 ☺

相关内容