蜘蛛在站内的行走,本质上是一次沿链接展开的遍历:从一个入口页出发,把遇到的 URL 放进待抓队列,再逐个走下去。路径设计得顺,它能一路走到底;站内到处是回环和断头路,它就会把时间花在绕圈和掉头上,新 URL 的发现自然变慢。
回环:路径在原地打转
回环指的是链接不断指向已经走过的地方,蜘蛛反复回到同一批页面。
- 列表页互相推荐:A 列表推荐 B 列表,B 又推荐 A,两边都没有指向内容页的有效出口。
- 标签页与聚合页交叉互链:几十个标签互相连接,形成一张封闭的网。
- “相关推荐”把整站串成一张大网,每个页面都能到任意页面,看上去连通,实际没有层级。
回环本身不等于问题,但它会占用抓取机会。判断标准很直接:如果去掉回环里的这些链接,蜘蛛还能不能找到那些内容页?如果答案是不能,说明主干路径太弱,回环成了它唯一的通路。
断头路:走到这里就没路了
断头路是另一种极端:页面被走到,却没有任何值得继续走的出口。
- 文章页尾部只有一句返回首页,没有任何同类内容或栏目入口。
- 分页的最后一页,既不指向栏目,也不指向上一篇。
- 筛选参数页互相组合,生成大量彼此不连、也无出链的地址。
- 栏目下暂时没有内容,页面只剩一个空列表。
处理断头路不是往页面底部堆一堆链接,而是给出两三个明确方向:回到所属栏目、上一篇或下一篇、几条同类内容。方向少而准,蜘蛛更容易判断接下来去哪个层级。
用几个动作把死角找出来
- 从首页手动点三到四层,看能不能走到你最希望被抓的那些页面。
- 把访问日志按 URL 聚合,找出被抓得异常频繁的页面,它们往往处在回环的中心。
- 挑出只被抓过一次、之后再没出现的 URL,回头看它周围有没有出口。
- 核对 Sitemap:里面有多少 URL 能在三步内从首页走到,走不到的,多半是结构上缺少支撑。
Sitemap 与内链的分工
Sitemap 解决的是“知道你有哪些 URL”,内链解决的是“知道这些 URL 值得走”。只提交 Sitemap,蜘蛛拿到的是地址清单,缺少路径支撑,走到内容页后往往无处可去,只能退回入口重新走。两者配合的方式是:Sitemap 做覆盖兜底,内链把重要页面放在主干路径上,让它们能被自然带出来。
路径中断有时是响应问题
断头路不一定出在链接上。超时、5xx、连接被重置,都会让蜘蛛在某一跳停下,它这一轮就走不到后面的页面。抓取日志里如果某段路径的响应时好时坏,先修响应,再谈结构调整。
结构上的死角,往往比内容质量更快地拖慢新 URL 的发现速度。
可以定期做一次简单走查:挑十个希望被发现的页面,记录从入口走到它们要几跳、经过哪些中间页。跳数过多,或者必须依赖参数页中转的,就是把路径重新铺一铺的地方。改完不必期待马上变化,蜘蛛重新走一遍需要时间,也不会因为结构变好就必然收录。