很多站点把精力放在首页有多少个外链、首页能带出多少个入口,却很少追问一句:蜘蛛顺着这些入口走下去之后,能不能顺利到达真正需要被发现的页面。抓取路径是一条从入口到详情页的连续链路,导航、面包屑、列表页和正文内链共同决定了这条链路是通畅还是中途断掉。
抓取路径的起点不止首页
蜘蛛进入站点的方式有很多种:首页、栏目页、Sitemap、外链指向的深层页面,甚至是历史遗留的某个 URL。这些入口进入之后,都会沿着页面上的链接继续向外扩散。因此判断抓取路径是否合理,不能只看首页,而要看每一类入口进入后,能在多少步之内覆盖到核心内容。
可以用一个简单的观察方法:从任意一个常见入口出发,记录到达最重要的那批页面需要点击几次。如果普遍需要四步以上,或者必须经过参数筛选页才能到达,那这条路径就偏长,容易在扩散过程中被提前截断。
主导航决定第一层目录的宽度
主导航是站点内被蜘蛛最频繁访问的链接集合,它基本决定了第一层栏目能被以多快的速度发现。导航里放什么、放多少个,直接影响后续的扩散效率。
常见的导航问题
- 导航项写成图片或依赖脚本渲染,页面源码里看不到可以被跟随的链接。
- 导航里的链接指向带参数的跳转地址,而不是栏目本身的规范 URL。
- 导航项过多且混杂,把临时活动页、专题页和长期栏目放在同一层,稀释了稳定的入口。
- 导航在不同页面模板下不一致,导致同一批页面之间存在互相矛盾的第一层入口。
处理方式并不复杂:把长期稳定的栏目留在主导航,把时效性内容放到栏目内部的运营位;确保导航链接在 HTML 源码中直接可见,并指向规范的、不含多余参数的地址。
面包屑承担的是路径回填
面包屑的价值不在于给用户看,而在于为每个详情页提供一条指向上级栏目的稳定链接。当列表页或导航因为改版、翻页、参数变化而暂时失效时,面包屑往往是最后一条仍然有效的上行路径。
- 面包屑的每一级都应该是真实存在的可抓取页面,而不是不可访问的分类名。
- 层级顺序要和目录结构一致,避免出现首页、子类、父类、详情这种颠倒结构。
- 不要在面包屑中使用会跳转到搜索结果页的链接,那会把抓取引向无限组合。
列表页与详情页之间的链路
列表页是站内最主要的入口分发点。它的翻页、排序、筛选都可能产生大量变体 URL,如果没有控制,蜘蛛会在列表层反复徘徊,迟迟进不到详情页。
- 保证第一页列表在 HTML 中直接输出足量的详情页链接,而不是等用户滚动后再加载。
- 翻页链接尽量使用可抓取的 a 标签,而不是按钮或无限滚动。
- 筛选和排序参数如果会生成新 URL,用 robots 规则或参数规范化的方式收敛,避免形成组合膨胀。
- 列表页的更新时间要与实际内容更新保持一致,便于蜘蛛判断何时值得回访。
用日志验证路径是否成立
路径设计得再合理,也需要用真实数据验证。抓取日志里能直接看到蜘蛛到达了哪些地址、访问频次如何、哪些页面从未被访问过。把日志按目录和层级归类,就能看出入口衰减发生在哪一层。
如果某一层目录的抓取量明显低于上一层,而再下一层却有正常抓取,通常说明中间那一层存在入口缺失或链接不可见的情况,而不是蜘蛛不愿意抓。
落地检查清单
- 从首页出发,用三步以内能否到达核心详情页。
- 主导航、面包屑、列表页三处的链接是否都指向规范 URL。
- 是否存在只能通过站内搜索或参数页到达的内容。
- 日志中是否有整层目录长期零抓取的情况。
- 面包屑是否覆盖每个详情页,且层级与目录一致。
抓取路径本质上是站点结构在蜘蛛视角下的投影。把导航、面包屑和列表页这三条主要通道理顺,比反复提交 URL 更有效,也更容易在结构变动时保持稳定。