搜索蜘蛛发现 URL 的主要方式是顺着页面上的链接一跳一跳地走。首页、栏目页、列表页、详情页,每一跳都算一层。层级越浅,蜘蛛越容易反复经过;层级越深,到达需要走的跳数越多,中间任何一环失效,后面的 URL 就可能长期不被发现。这个跳数通常叫抓取深度,也有工具称为点击深度。它和 Sitemap、推送渠道一样,是决定 URL 发现速度的基础变量。
深度是怎么影响 URL 发现的
蜘蛛抓取首页时拿到一批链接,抓取这些页面时再拿到下一批。假设首页是第一层,那么第二层的 URL 会被优先排队,第三层次之。对于内容量大的站点,深层 URL 往往排在队列后面,加上抓取配额有限,实际被访问的频率会明显低于浅层页面。
更麻烦的是路径单一。如果某个详情页只能从「列表页翻到第 8 页」或者「先选筛选条件再点排序」才能到达,那么它对蜘蛛来说等于藏了八层。列表页更新快,旧分页链接被替换后,这条路径还会断掉。
核对深度的三个入口
站内爬虫:先看结构上的最短路径
用爬虫工具从首页出发,不要只丢 Sitemap,记录每个 URL 的层级。重点看三类页面:详情页、栏目聚合页、标签或专题页。把深度按模板分组,统计各模板的最大深度和常见深度。如果重要模板大部分在 5 层以上,就值得调整结构。
抓取日志:看蜘蛛实际从哪来
服务器日志里的 referrer 字段,能看出蜘蛛是沿着哪条链接过来的。把日志中的目标 URL 和来源页面成对提取,观察同一批详情页常见的来源是栏目页、分页还是相关推荐。若某个栏目的大量 URL 来源都是深层分页,说明入口过于单一。
日志里的来源不总是完整,有些请求 referrer 为空,需要用站内爬虫的结果作为补充,不要只凭一边下结论。
Sitemap 与内链对照
把 Sitemap 中的 URL 数量和内链可达的 URL 数量比一比,差距能反映有多少页面只能靠 Sitemap 被知道。差距大不代表一定有问题,但如果这些页面长期处于「已发现未抓取」,就要考虑给它们补一条内链入口。
深度过大的常见原因
- 详情页只能从翻页列表进入,首页和栏目页没有直接出口。
- 分类层级太细,三级、四级栏目之下才出现内容列表。
- 相关推荐、热门榜单只放在详情页底部,蜘蛛走到那里已经消耗了不少配额。
- 面包屑只有文字没有链接,或者链接指向了带参数的地址。
- 重要页面被放在需要点击「加载更多」之后,链接在初始 HTML 里不存在。
- 站内搜索、筛选参数页占用了入口,真正的内容页反而没有被链。
把深度压下来的做法
- 在首页或一级栏目页留出稳定入口,指向更新频繁的列表或聚合页。
- 分类层级尽量控制在三层以内,详情页通过列表页直接可达。
- 面包屑做成可点击链接,回到上一级列表,形成多一条浅层路径。
- 相关推荐、同栏目热文用静态链接输出,不要只靠 JS 渲染。
- 对确实较深的内容,用专题页或聚合页把它们聚到浅层,再链回详情。
- Sitemap 作为补充入口保留,但不要把它当成唯一的发现渠道。
别把首页变成链接墙
压深度的常见误区,是把几百个链接堆在首页。链接总量过大,单页可分得的权重被摊薄,用户也难以阅读。更稳的做法是分层:首页给一级栏目和少量聚合页,栏目页给子分类和列表,列表页给详情。每一层都控制链接数量,让蜘蛛按层次自然推进。
核对节奏
站点结构改动、模板换版、列表分页逻辑调整之后,都值得重新跑一次深度核对。把深度分布、日志来源、抓取覆盖率三组数据放在一起看,比单看某一个指标更能说明问题。发现深层 URL 抓取长期偏少时,先补一条浅层入口,再观察日志中的变化。