网站收录

蜘蛛看到的可能不是用户看到的:JS 渲染页面的收录自查

同一个地址,用户打开是完整图文,蜘蛛拿到的源码里可能只有一行“加载中”。本文先说清抓取与渲染的区别,再给出判断页面是否依赖 JS 渲染的自查方法、收录表现上的常见信号,以及从关键内容直出到分页改造的处理顺序,帮你判断问题出在渲染前还是渲染后。

网站收录

蜘蛛看到的可能不是用户看到的:JS 渲染页面的收录自查

同一个地址,用户打开能看到完整的图文,蜘蛛抓到的 HTML 里却可能只有一行“加载中”和一个空容器。这不是玄学,而是渲染方式决定的:内容是通过 JavaScript 在浏览器里生成的,还是直接写在服务器返回的源码里。搞清楚这一点,很多“迟迟不收录”“只收了首页”的问题就有了排查方向。

蜘蛛先拿到的是源码,其次才是渲染结果

抓取和渲染是两件事。爬虫请求一个 URL 时,第一步拿到的是服务器返回的 HTML 源码;如果内容需要 JS 执行才会出现,就要进入第二步——用渲染服务执行脚本,再看到完整页面。第二步确实存在,但成本更高、排队更久,也不是所有页面都能顺利走到这一步。

  • 源码里就有正文的页面:抓一次就能判断内容,收录链路最短。
  • 源码里只有壳、正文靠接口填充的页面:需要渲染后才看得见内容,链路更长,也更容易在渲染被跳过或失败时“空手而归”。

所以问题往往不在“JS 能不能被收录”,而在“蜘蛛到底有没有拿到你的正文”。

先确认页面属于哪一类

  1. 直接查看源码(右键查看源代码,或用 curl 拉一次),搜索正文里的关键词,看能否命中。
  2. 在浏览器里禁用 JavaScript 再打开同一页,观察还剩多少内容。
  3. 用不同 UA 请求同一地址,对比返回的 HTML 是否有差异,有些站点对爬虫做了特殊处理。
  4. 对照服务器日志,看普通抓取请求和渲染请求是否都出现过,频率如何。
判断标准很简单:如果正文关键词在源码里搜不到,就不要默认蜘蛛也一定能看到。

内容“藏在 JS 里”的常见形态

  • 前端路由的单页应用,路由切换不产生新的 HTML,栏目页和详情页共用同一份壳。
  • 懒加载:滚动到可视区域才请求内容和图片,首屏之外的部分在源码中不存在。
  • 评论区、相关推荐、参数表格等由接口异步填充,正文完整但辅助内容缺失。
  • Tab 切换、折叠面板:默认隐藏的部分是否存在于 DOM 中,各站情况不一。
  • 无限滚动列表:后续内容没有独立 URL,蜘蛛无法逐条进入。

收录表现上的几个信号

  • 收录量长期停在首页和少数几个栏目页,详情页几乎不进索引。
  • 索引里的标题和描述是站点默认模板,而不是页面自己的内容。
  • 快照或缓存下来的页面接近空白,只剩导航和页脚。

这些信号并不专属于渲染问题,但如果同时出现在一个 JS 站点上,优先往这个方向查,比反复改标题更有效。

处理顺序:先低成本,再动架构

  1. 把关键内容(标题、正文、主要内链)改为服务端直出,这是最稳的一步,改动范围可控。
  2. 做不到全站直出时,至少保证详情页和栏目页的首屏内容在源码中可见。
  3. 列表和分页改用真实链接,让每个重要页面都有可被跟随的入口,而不是纯 JS 事件跳转。
  4. 懒加载内容提供替代路径,比如静态分页或独立的详情 URL。
  5. sitemap 只放真实可访问、内容可见的地址,避免把空壳页也交出去。
  6. 改完后观察日志与索引变化,给渲染和重新抓取留出时间,不要一天内反复调整结构。

渲染是必要条件,不是收录保证

让内容在源码里可见,只是把页面送进了正常的候选池。最终能否进索引,仍取决于内容质量、与站内其他页面的重复程度以及整体站点信号。反过来,如果连正文都没被拿到,再谈优化标题、内链和更新频率都是空转。