不少站点都开了站内搜索,用户输入关键词就能找到内容。麻烦的是,爬虫也会用这个入口:它顺着搜索框、热门搜索词、结果页里的相关链接一路点下去,每次携带不同参数,服务器就返回一个新页面。页面本身往往只有几条结果、一段空泛的提示,正文重复度极高。
这类页面的问题不在技术,而在数量。少量几个搜索页无所谓,成千上万条参数组合同时存在,就会占用抓取资源,也会让站点的内容质量信号变得模糊。
先确认站点里到底有多少搜索页
自查的第一步是把范围摸清楚,而不是凭感觉。可以试试下面几种方式:
- 翻搜索日志或服务器日志,筛选带搜索参数的请求,看蜘蛛访问量占比有多高。
- 看索引数据,确认有没有明显是搜索结果页的 URL 被收录。
- 在站内搜索框里输入几个常见词,观察结果页 URL 的构成,是 q= 还是 s=,有没有分页参数。
- 检查搜索结果页是否被其他页面主动链接,比如热门搜索模块、相关推荐模块。
三种常见处理方式,按需选择
一、直接禁止抓取
在 robots.txt 里屏蔽搜索路径,是最直接的做法。前提是路径规则足够明确,别把正常栏目一起挡掉。屏蔽前先用工具模拟测试,确认规则命中的是搜索结果页,而不是内容页。
二、允许抓取但标记 noindex
如果担心直接屏蔽会让蜘蛛看不到页面里的链接,可以让搜索页返回 noindex 标记,让蜘蛛进来但不收录。这种做法适合搜索页里还带着有价值链接的情况,代价是仍会消耗一部分抓取。
三、收敛搜索入口的暴露
无论选哪种,都要减少搜索页对外的出口。结果页里的相关搜索、热门词、分页链接,都是蜘蛛继续往下爬的跳板。可以考虑给这些链接加上 nofollow,或者干脆不在结果页里大量展示。
几个容易忽略的细节
- 空结果页:搜不到内容时的提示页,通常就是纯空壳,最好一并处理。
- 分页参数:搜索结果分页会产生大量近似页面,能限制页数就限制。
- 大小写与空格:同一个词的不同写法可能生成不同 URL,需要做归一化。
- 别伤到用户功能:处理的是爬虫行为,不是把站内搜索本身关掉。
屏蔽规则不是一次性的。模板改版、搜索组件升级后,路径和参数都可能变化,建议把这条检查放进定期的站点巡检清单里。
处理完之后怎么验证
改完规则后,不要只看 robots.txt 本身。用抓取测试工具请求几条典型的搜索 URL,确认返回的是预期结果;再去日志里观察一段时间,看相关请求是否明显减少。如果搜索页已经被收录,可以配合站点地图和内部链接清理,逐步让它们淡出,而不是期待一夜之间消失。
最后提醒一句:站内搜索页本身不是坏东西,它是给用户用的工具。问题只在于它是否被当成了内容页来对待。把入口收一收,把参数理一理,站点结构和抓取都会清爽一些。