蜘蛛进站之后并没有一张地图,它靠链接一步步走。站内链接里,全站导航和面包屑是绝大多数抓取路径的起点:它们决定了蜘蛛先看到哪些栏目、沿着哪条线走到详情页,也决定了它会不会在某些页面上反复绕圈。
蜘蛛进站后,先找的是“主路”
首页通常是蜘蛛最常来的入口。从首页出发,它能走的路径大致分两类:一类是全站导航、面包屑这种固定出现的链接,另一类是正文里的相关阅读、列表翻页、标签聚合等。前者稳定,每次都能看到,相当于主干道;后者位置不固定,属于支路。
主路清晰时,蜘蛛可以用较少的跳数到达大部分栏目和详情页。主路混乱时,它会花很多次抓取在几个页面之间来回走,真正需要更新的内容反而排在后面。
全站导航要满足的三个条件
- 链接要能被抓取。如果导航是 JS 渲染出来的下拉菜单,蜘蛛拿到的首屏 HTML 里可能没有任何可走的路径,等于白设。
- 层级保持稳定。导航频繁调整,会让蜘蛛反复重新判断路径优先级,短期内抓取分布会出现波动。
- 覆盖所有重要目录。只有一级栏目在导航里,二级三级只能靠列表页一步步往下钻,抓取深度就会被拉长。
面包屑:告诉蜘蛛它在哪一层
面包屑看起来只是给用户看的,但它对抓取同样有用。它给每个详情页提供了一条通向栏目页和首页的固定链接,蜘蛛从任意一个详情页进来,都能顺着面包屑回到主干道,再走向别的区域。
做面包屑时有两点值得留意:一是每一层都应该是真实存在的可访问页面,不要指向 404 或者一连串重定向;二是当前页面这一层通常不加链接,避免出现指向自己的自链接。
抓取回路是怎么形成的
回路指的是蜘蛛沿着链接走一圈,最后回到起点附近,却没有进入新内容。常见的几种:
- 分页的“上一页/下一页”和“首页/末页”互相链接,形成一条可以一直走下去的链。
- 标签页、专题页彼此互链,每个页面上都挂着几十个同类标签链接。
- 筛选参数生成的页面互相引用,地址不同但内容高度重复。
- 导航和面包屑指向同一批 URL,但没有形成层级,蜘蛛来回走的始终是同一批地址。
回路本身不一定有害,但如果它的数量远超真实内容页,抓取资源就会被大量消耗在重复路径上。
自查和调整的顺序
- 先看抓取日志里访问最多的那几十个 URL,判断是内容页还是列表、标签、参数页。
- 用站点地图和站内搜索把重要 URL 列出来,对比哪些从来没有出现在抓取记录里。
- 检查导航和面包屑在关闭 JS 的情况下是否还能读出链接。
- 确认栏目页、列表页的链接是否指向最终地址,避免连续重定向。
- 对重复度高的标签页、参数页,决定是收敛、加 nofollow 还是直接在 robots.txt 中屏蔽。
调整路径时一次只改一类,观察两到四周的抓取日志再决定下一步。多个改动叠加在一起,很难判断是哪一处起了作用。
小结
抓取路径的设计,核心是让蜘蛛用较短的跳数、较少的重复访问,覆盖到真正需要更新的页面。全站导航提供主干,面包屑提供回程,内链提供支路,站点地图做兜底,服务器保持稳定响应则保证这条路径不会在半路断掉。把这几件事按顺序理清楚,通常比单纯增加链接数量更有效。