搜索抓取

站内搜索页和标签聚合页:蜘蛛抓取路径上的岔路口怎么收

站内搜索、标签聚合这类自动生成的页面,既给蜘蛛提供了入口,也容易把抓取引向大量重复和参数化的 URL。这篇文章讲它们通常从哪里被发现、为什么会变成负担,以及哪些页面值得保留、哪些应该用 robots、nofollow 和 canonical 收敛,最后怎样用日志验证调整是否生效。

搜索抓取

站内搜索页和标签聚合页:蜘蛛抓取路径上的岔路口怎么收

很多站点的 URL 并不是靠编辑一篇篇写出来的,而是由站内搜索、标签、专题聚合自动生成的。这类页面给用户提供了入口,也给蜘蛛提供了一条几乎没有尽头的爬行路径。问题不在于它们存在,而在于蜘蛛会不会把大量抓取时间耗在这些页面上。

蜘蛛是怎么找到这些页面的

最常见的情况是链接就摆在明面上:搜索框提交后的结果页、文章底部的标签云、侧栏的热门关键词、专题页里的“更多”按钮。只要这些链接是标准的 a 标签,蜘蛛顺着首页走两三层就能碰到。

另一条路是页面里的分页和排序。搜索结果的第二页、第三页,标签页的翻页,往往带参数拼接。如果这些链接互相串联,蜘蛛就会沿着一条链一直走下去。

还有一种是站点地图或者内链系统把标签页全量提交。数量一多,蜘蛛发现得很快,但抓取也会更集中地落在这些页面上。

为什么容易变成负担

  • 组合数量不可控。多个标签叠加、关键词排序变化,都可能生成新的 URL。
  • 内容重复度高。同一批文章换个顺序出现在多个列表里,页面主体差别不大。
  • 对服务器有压力。站内搜索通常要查数据库,蜘蛛并发请求时的开销比静态页明显。
  • 挤占抓取分配。真正需要更新的详情页,排在这些列表页后面。

这些影响不会立刻显现,通常在日志里表现为:某个参数页被反复抓取,而新发布的文章迟迟没有访问记录。

哪些留下,哪些收敛

值得保留的

有明确搜索需求、内容相对稳定、并且有真实内链指向的标签页,可以保留。比如固定的专题分类、和业务强相关的少数关键词页面。它们既是用户的入口,也是蜘蛛理解站点结构的线索。

建议收敛的

  1. 带任意关键词参数的搜索结果页,尤其是可以被外部构造成无限组合的。
  2. 标签交叉组合页,比如两个以上标签叠加生成的列表。
  3. 排序、视图切换、每页数量这类纯展示参数。
  4. 内容为空或者只有几条结果的低质聚合页。

处理方式可以按强度区分:robots.txt 禁止抓取带参数的路径,是对蜘蛛最直接的约束;页面内链接加 rel="nofollow",或者用 JS 触发而不给出可抓取的 a 标签,能减少发现;对仍需保留的页面加上规范的 canonical,把信号归到主列表页。需要注意的是,禁止抓取并不等于禁止收录,如果外部有链接指向这些 URL,它们仍可能出现在结果里,只是蜘蛛看不到内容。

几个容易踩的坑

  • 一刀切把标签页全禁掉,结果蜘蛛失去了发现新文章的路径。
  • 只在 robots 里写规则、不做内链收敛,蜘蛛仍在反复尝试被禁止的 URL。
  • 搜索结果页对未登录用户可见,对蜘蛛也可见,却忘了加参数限制。
  • 站内搜索接口没有做频率限制,蜘蛛密集请求时拖慢整站响应。

用日志确认效果

调整之后不要只看 robots 文件,打开服务器日志,按路径分组统计蜘蛛的访问次数和状态码。重点看两件事:参数页的请求量是否下降,详情页的抓取量是否相应上升。如果两周后抓取结构没有变化,可能是内链没有真正改掉,或者有外部链接持续把蜘蛛引向旧路径。

站内搜索和标签聚合页本身不是问题,问题在于它们是否占据了那些你希望蜘蛛优先走的路径。入口留几个够用的,剩下的交给规则去收敛,比全部开放或者全部封死都更稳。