先看现象。视频页为了省流量把 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 里。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
