先看现象。视频页为了省流量把 video 标签设成 preload=none,只有用户点击播放才加载 mp4,视频搜索上线两个月,收录数一直是零,页面里明明有完整的 VideoObject 标记。

把日志和配置对完,能解释这个现象的基本就这几处。preload=none 时浏览器和蜘蛛都不会主动请求视频源。另一种情况是mp4 地址写在 JS 里,HTML 里没有可直接读取的 video src。

还有一种情况,视频 sitemap 的 content_loc 指向需要鉴权的地址。

另外,封面图是懒加载,抓取时还是占位图。

先看 HTML 里的 video 节点有没有 src

curl -s https://www.example.com/video/1024 | grep -o '<video[^>]*>'

然后改成 preload=metadata 并保留 src 属性

curl -s https://www.example.com/video/1024 | grep -c 'preload="metadata"'

再往下确认 mp4 地址不带鉴权能直接访问

curl -sI https://static.example.com/video/1024.mp4 | head -1

剩下的就是把视频源同步写进 VideoObject 和 sitemap

grep -o '"contentUrl":"[^"]*' page.html

报错是间歇性的,我蹲守了半小时才抓到一次完整现场。

改完先别撤,确认这几项。页面 HTML 里能看到 mp4 直链,直接访问返回 200 和 video/mp4,两周后视频收录从零涨到页面数的六成。

补一句。省流量和可抓取经常冲突,可以用 preload=metadata 折中,但源地址必须出现在 HTML 或 sitemap 里。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189