蜘蛛不会凭空知道站点里有哪些 URL,它靠的是链接一层层走。站内链接网络中,有三处位置承担了大部分“指路”工作:主导航、面包屑和聚合页。这三处设计得清楚,重要栏目和详情页就容易被反复走到;设计得随意,蜘蛛要么涌进大量低价值页面,要么在某一层停住。
主导航:告诉蜘蛛站点的骨架
主导航是全站每个页面都会出现的链接集合,蜘蛛访问任意一个页面,都能顺着它重新回到主要栏目,因此栏目页通常拥有较高的抓取频率。几个容易出问题的地方:
- 导航链接由 JS 拼接,HTML 里只有空容器,蜘蛛第一轮抓取拿不到这些地址;
- 下拉菜单里的二级链接依赖悬停或点击才渲染,实际等同于隐藏;
- 导航条目堆到几十个,把首页链接的注意力摊薄,也不利于蜘蛛分辨主次。
比较稳妥的做法是让主导航保持HTML 可解析,条目控制在合理数量,一级栏目尽量少而稳定,二级栏目放到栏目页或聚合页里去展开。
面包屑:层级回溯与结构表达
面包屑的价值不只是给用户看。它给蜘蛛提供了一条从详情页回到栏目页、再回到首页的短路径,同时暗示页面之间的从属关系。
常见写法问题
- 只显示当前页名称,前面几级用图标或省略号代替,链接实际缺失;
- 用列表加 JS 跳转,爬虫解析不出 href;
- 面包屑层级与 URL 目录层级不一致,等于给出两套结构信号。
如果站点做过改版或迁移,面包屑还是帮助蜘蛛重新接上旧路径的辅助手段之一——前提是它指向现行有效的地址,而不是一串跳转的起点。
聚合页:横向铺开 URL 的地方
栏目页、标签页、专题页、搜索结果页都属于聚合页,它们的作用是让蜘蛛从一个入口触达几十上百个详情页。这里最需要克制的,是参数组合:排序、筛选、每页条数、页码叠加在一起,能生成远超实际内容量的 URL。
可行的处理方式:
- 筛选和排序参数用 canonical 指回不带参数的规范地址,或直接不让蜘蛛跟随;
- 分页保留可点击的链接,不要只留一个“加载更多”按钮;
- 标签页设一个下限,内容量太少的不生成独立页面。
三处入口要互相配合
同一批 URL 从导航、面包屑、聚合页三个方向被链接时,指向它的锚文本最好保持一致的核心词。锚文本飘忽不定,蜘蛛仍会抓,但对页面主题的判断会变得模糊。另外,不要出现某一层入口全部指向低价值页面、而真正有内容的详情页只能靠 Sitemap 兜底的情况——Sitemap 是补充,不是主力通道。
把站内链接想成一张地图:导航画主干道,面包屑画支路,聚合页画街区。蜘蛛愿不愿意走远,取决于这张图上有没有明确的路标,以及路标指向的是不是真实存在、能返回 200 的页面。
上线后的简单核对顺序
- 关掉 JS,用抓取工具看导航和面包屑的链接是否还在 HTML 里;
- 抽查几个详情页,确认面包屑每一级都可点击且指向 200 状态码;
- 看聚合页分页,确认翻页链接是 a 标签而不是按钮事件;
- 对照服务器日志,看蜘蛛是否真的访问到了这些入口链接。
服务器稳定性同样影响这三处入口的价值:如果栏目页响应慢或间歇性 5xx,蜘蛛即使知道路径,也会降低访问频率。先把响应时间控制住,再谈结构调整,顺序会顺很多。