网站收录

懒加载与折叠内容:收录之前先确认正文能不能被抓到

正文用懒加载、点击展开或选项卡承载时,浏览器里看得到,抓取端拿到的 HTML 里却可能是空的。本文按“先验证内容是否在响应里,再谈收录指令”的顺序,梳理三种常见写法的风险点、排查步骤和可落地的调整方式。

网站收录

懒加载与折叠内容:收录之前先确认正文能不能被抓到

很多站点把正文做成滚动后才加载、点击才展开,或者塞进选项卡里。用户在浏览器里看得到,抓取端拿到的响应里却可能是空的。讨论收录之前,先确认内容是否出现在可抓取的响应中,这一步的优先级高于任何收录指令的调整。

抓取端看到的,和你看到的不是同一份页面

浏览器里内容可见,是因为 JavaScript 已经执行并把节点补进了 DOM。抓取通常分两步:先取初始 HTML,必要时再进渲染队列。如果内容只在用户交互之后才请求,比如点击“展开全文”、滚动到底部才发接口,这些动作在抓取过程中一般不会发生,内容自然进不了后续流程。

验证方法很直接:用“查看网页源代码”而不是开发者工具的 Elements 面板,在源码里搜索正文的第一句话。搜得到,说明内容在初始响应里;搜不到,问题就不在收录指令上。

三种常见写法,风险各不相同

data-src 与滚动触发的延迟加载

图片、评论、相关阅读用 data-src 或 data-original 延迟加载时,初始 HTML 里的 src 往往是空的。图片类资源通常依赖 src 和 alt 被理解,空 src 基本等于这张图不存在。如果连正文文字也是滚动之后才注入,风险同理。

“加载更多”与无限滚动

这类内容通常由接口返回,URL 不发生变化,后面的条目在抓取端等于不存在。真实分页链接是让这些 URL 被发现的常规手段,不能只靠一次滚动。

选项卡与手风琴折叠

判断标准只有一个:内容在不在响应里。如果所有面板的文字本来就写在 HTML 中,只是用 CSS 控制显隐,通常仍可被抽取;如果是点击时才去 fetch,那就和上一类情况一样。

折叠内容会被降低评价吗

隐藏不等于不能被索引。用 CSS 或脚本隐藏、但确实存在于 DOM 中的内容,一般仍会被处理,只是其在页面中的分量可能低于首屏可见内容。也就是说,问题通常不在“折叠”这个动作上,而在“内容压根没加载”。先把后者修好,再决定是否把关键信息提到首屏。

建议的核对顺序

  1. 用“查看网页源代码”打开目标页,搜索正文中的一句原文,确认是否出现在初始响应里。
  2. 关闭 JavaScript 或改用纯文本方式抓取,看正文是否仍然存在。
  3. 查服务器日志或抓取日志,对比该 URL 的响应体积,明显偏小往往意味着正文没被返回。
  4. 确认内容是否依赖点击、滚动等交互才发起请求;如果是,把核心内容改为服务端输出。
  5. 检查“加载更多”是否有对应的可链接 URL,能被链接到才可能被发现。
  6. 最后再看 canonical、noindex 等指令,避免指令层面的结论掩盖了内容缺失这一真实原因。

可以落地的调整

  • 标题、正文和关键信息默认写入初始 HTML,懒加载只留给次要图片和非核心模块。
  • 图片懒加载保留 src 或提供 noscript 兜底,不要让 src 长期为空。
  • 列表使用真实分页链接,“加载更多”作为体验增强而非唯一入口。
  • 选项卡内容一次性输出,用 CSS 控制显示,不要点击后再取数据。
  • 上线后从站点地图里抽几个 URL 定期复查响应内容,确认没有悄悄退回空壳状态。

如果站点确实依赖前端渲染,抓取端需要走渲染队列,收录节奏会慢一些,渲染失败时还可能只看到一个空壳。对核心内容来说,服务端直接输出通常是最省事的做法。

收录是结果,不是开关。先把内容稳定地送到抓取端,再讨论索引和检索表现;顺序反了,调整指令往往解决不了真正的问题。