有些页面内容扎实、服务器也稳定,但抓取日志里长期看不到它的记录。排查时容易先怀疑页面质量,其实更常见的原因是爬虫压根没发现这个 URL。发现、抓取、索引是三个独立环节,发现这一步断了,后面都不会发生。
先确认页面是否存在真实可爬的入口
爬虫靠链接找 URL。如果一个页面只存在于后台、站内搜索结果或站点地图里,而没有从任何已收录页面链接过去,它被发现的概率会很低。
入口链接要是可解析的 a 标签
检查渲染后的 HTML 中是否有带 href 的链接。用按钮加 onclick 跳转、或者依赖前端路由在客户端生成地址的做法,爬虫在渲染之前看不到这条链接。即使能渲染,也要看渲染是否稳定、是否在首屏就被触发。
入口链接有没有被指令挡住
内链上加了 rel 的 nofollow、指向被 robots.txt 屏蔽的路径、或者目标 URL 带大量无意义参数,都会让发现环节打折。nofollow 现在是提示而非绝对指令,但把它当默认手段用,会让一批页面长期得不到像样的入口。
再看这些页面在站内的层级深度
从首页出发点几次能到目标页,直接决定它被发现的优先级。层级过深的页面往往要等很久,甚至等不到。
- 目标页距离首页的点击层数是多少,是否超过四到五层;
- 是否只能从分页序列的后面几页进入;
- 是否只挂在某一个低频栏目下,而该栏目本身也很少被访问和抓取;
- 列表页是否用「加载更多」替代了分页链接,导致后续条目没有可爬入口。
孤岛页面的几种常见形态
孤岛页面指的是没有任何内链指向、同时缺少外链的页面。它通常出现在这些场景:
- 批量生成的标签页、筛选结果页,只在内部搜索接口里能到达;
- 旧版页面改版后仍可访问,但导航已经不再指向;
- 活动页、专题页上线时没有挂到任何常设栏目;
- 多地区或多语言版本只靠相互之间的 hreflang 引用,缺少主站入口。
核对方式很直接:在站内搜索里输入页面标题或关键词,看结果是否只出现在站内搜索接口中。如果站内搜索本身对爬虫不可用,这类页面基本等于孤立。
站点地图能补位,但不能替代内链
站点地图是发现环节的补充信号,提交了不代表一定被抓取,更不代表被索引。它能做的是把 URL 摆到爬虫面前,减少纯靠链接爬行带来的遗漏。真正影响抓取优先级的,还是页面上可见的链接关系,以及页面被点击、被引用的程度。
所以核对时不要把「已提交站点地图」当成发现环节已经解决。更实际的做法是:站点地图负责兜底,主导航、面包屑和正文内的相关内容模块负责提供常规入口。
发现环节的核对顺序
- 确认目标 URL 在渲染后的 HTML 中至少有一条可解析的 a 标签链接;
- 检查这条链接是否被 nofollow、robots.txt 或登录墙挡住;
- 计算从首页到目标页的点击层数,判断是否属于深藏页面;
- 用站内搜索与站内链接检索,确认它是不是孤岛;
- 查看站点地图是否收录该 URL,以及提交时间与最近一次被读取的时间;
- 在抓取日志里按 URL 过滤,确认是否有过任何一次请求记录。
如果日志里连一条请求都没有,问题基本停在发现环节,补内链入口通常比继续优化页面内容更有效。如果日志里有请求但状态异常,才需要往后看抓取和索引的部分。把顺序理清楚,能省掉很多无效的改版和内容重写。
发现环节的关键不是把页面推给爬虫,而是让它在站内有一条稳定、可解析、别太深的路径。