搜索抓取

蜘蛛没跟进的链接:从抓取日志排查 URL 发现断点

抓取日志里常看到列表页被反复访问,详情页却很少出现。这通常不是蜘蛛偷懒,而是 URL 发现路径有断点。本文从链接可见性、nofollow 与 robots、分页参数、内链深度和服务器响应几个方面,给出排查顺序和改善思路,帮助站点让重要 URL 更容易被蜘蛛跟进。

搜索抓取

蜘蛛没跟进的链接:从抓取日志排查 URL 发现断点

抓取日志里有一种常见现象:列表页、频道页被反复访问,但详情页的抓取记录很少。遇到这种情况,先别急着归因于蜘蛛偷懒或抓取预算不足,更可能是 URL 发现路径上有断点。蜘蛛要先在已抓取的页面里看到链接,才会把新 URL 加入待抓队列。链接没出现,或者出现了但被阻止跟进,后续抓取就无从谈起。

先确认蜘蛛是否真的看到了链接

打开一个被频繁抓取的列表页,查看服务器返回的原始 HTML,而不是浏览器渲染后的效果。如果链接只存在于 JavaScript 渲染结果里,或者被放在 iframe、需要点击按钮才展开的内容中,蜘蛛在初次抓取时可能看不到。

  • 链接由前端脚本异步插入,原始 HTML 中没有 href。
  • 链接放在图片、CSS 背景或表单里,没有可抓取的锚文本。
  • 链接需要登录、选择地区或关闭弹窗后才出现。
  • 列表页本身返回 200,但正文为空或只有加载骨架。

这些情况下,蜘蛛即使抓了列表页,也拿不到下一步的 URL。比较稳妥的做法,是把重要入口链接直接写进 HTML,至少在首屏或分页导航中保留一份可抓取版本。

链接可见但没被跟进

nofollow 与 robots 的配合

内链上的 nofollow 会提示蜘蛛不必跟进,robots.txt 则可以直接禁止抓取某类路径。两者目的不同:前者影响链接权重和跟进意愿,后者影响抓取权限。如果重要详情页的入口链接被加了 nofollow,或者所在目录被 robots 屏蔽,蜘蛛可能长期不访问。检查时把这两个设置分开看,不要混为一谈。

分页与筛选参数的干扰

分页、排序、筛选参数很容易生成大量相似 URL。蜘蛛可能在参数组合里来回抓取,消耗掉本可以用于详情页的抓取频次。建议限制可抓取的分页范围,对无实质内容的参数页做规范化或屏蔽,同时确保详情页链接在分页中稳定出现。

链接深度与内链结构

从首页到详情页的点击深度越深,蜘蛛发现 URL 的路径就越长。Sitemap 能补充一批 URL,但它更像提交清单,不能完全替代内链的引导作用。把重要栏目放在导航或正文相关推荐中,让详情页有多个入口,比只依赖深层分页更可靠。

服务器与抓取节奏的影响

服务器响应慢、频繁超时或返回 5xx,会让蜘蛛在抓取中途降低频率甚至暂停。后续链接即使存在,也可能因为抓取中断而没被跟进。排查时关注日志中的状态码分布、响应时间和重定向链长度。

  • 大量 5xx 或超时:先检查服务器负载、数据库查询和 CDN 回源。
  • 重定向链过长:合并跳转,减少蜘蛛到达内容前的等待。
  • WAF 或 CDN 误拦:确认蜘蛛 IP 段是否被拦截,观察 403、429 的比例。

一个可执行的排查顺序

  1. 在抓取日志中搜索目标详情页 URL,确认蜘蛛是否出现过。
  2. 查看列表页原始 HTML,确认详情链接是否可被抓取。
  3. 检查 robots.txt、meta robots 和 nofollow,排除主动阻止。
  4. 检查分页和筛选参数,减少低价值 URL 对抓取频次的占用。
  5. 检查服务器状态码、响应时间和重定向,排除抓取中断。
  6. 补内链、更新 Sitemap,并持续观察日志变化。

改善 URL 发现的几个习惯

  • 重要链接用标准 a 标签和可读锚文本,放在 HTML 中。
  • 保持栏目层级清晰,避免详情页只靠一条深层路径进入。
  • 控制分页数量,对无内容参数页做收敛处理。
  • Sitemap 及时更新,但不要把它当作唯一发现渠道。
  • 服务器保持稳定,减少蜘蛛抓取时的等待和失败。
抓取是发现与调度共同作用的结果。链接可见、路径通畅、响应稳定,蜘蛛才更有可能顺着入口走到详情页。

如果你发现蜘蛛长期只抓列表页,不妨从日志倒推:它看到了什么、被什么挡住、在哪里中断。小步调整内链和服务器配置,再观察后续抓取记录,通常比一次性大改更容易定位问题。