不少站点在搜索后台或日志里看到“已发现但未抓取”“抓取异常”,第一反应是去改 Sitemap,但问题往往不在 Sitemap,而在蜘蛛从入口走到正文这条路径的某个环节断了。把这条路径拆开,逐段排查,比反复提交 URL 更有效。
一条抓取路径上通常有五个节点
从发现到读到正文,大致会经过:发现来源(Sitemap、内链、外链、日志回捞)、抓取队列排队、DNS 与 TCP 连接、HTTP 响应与响应头、HTML 解析与正文提取。任何一个节点出问题,最终表现都可能是“页面没被抓”或“抓了但没被收录”,所以要先定位卡在哪一段,再决定改什么。
常见断点与表现
1. 发现断点:URL 进了队列,但入口本身是坏的
内链指向 404、指向重定向链的中间地址、指向被 robots.txt 屏蔽的路径,都会让蜘蛛走到一半停下。尤其是导航和列表页里的链接,如果靠 JS 跳转或 onclick 触发,蜘蛛拿不到 href,等于没有入口。
2. 响应断点:状态码和内容对不上
返回 200 却是空内容、返回 302 跳到无关页面、返回 503 又不给 Retry-After,都会让蜘蛛对这条路径的信任度下降。状态码应当如实反映资源是否存在,不要用 200 掩盖错误页。
3. 渲染断点:正文在 HTML 里看不到
正文依赖前端接口异步渲染,或者首屏内容要等很久才出现,抓取成本会明显变高。至少在服务端输出标题、正文主体和主要内链,保证不执行 JS 也能读到核心内容。
4. 路径断点:内链把路径和权重都打散
筛选、排序、分页参数会生成大量近似 URL,如果内链全都指过去,蜘蛛容易在参数空间里兜圈子。可以用 canonical、robots.txt 或链接规则收口,让主要路径保持稳定。
用日志把断点定位出来
- 确认蜘蛛是否来过:按 UA 与 IP 段过滤服务器日志,看目标 URL 有没有请求记录。
- 看状态码分布:把 3xx、4xx、5xx 单独统计,判断是路径问题还是服务器问题。
- 看响应时间:同一批 URL 中响应明显偏慢的,往往是数据库或接口瓶颈。
- 回溯入口:结合 referer 或抓取时间顺序,找到蜘蛛是从哪个页面走到这个 URL 的。
修复的优先顺序
- 先修服务器稳定性:5xx 和超时影响面最大。
- 再修状态码语义:404、301、410 各归其位。
- 然后收内链:保证主要页面能从首页在三次点击内到达。
- 最后才是 Sitemap 与主动提交,作为补充而非主力。
排查顺序应当是“先看路径通不通,再看内容有没有”,顺序反了容易做无用功。站点改版或迁移之后,尤其要重新走一遍这条路径。
抓取路径的稳定,最终取决于两件事:入口是否清晰,服务器是否可靠。把这两件事做扎实,大多数“蜘蛛不来”的问题会自然减少;至于收录和排名,仍由内容质量与竞争环境决定,不是靠抓取优化能承诺的。