站内搜索页和筛选组合,是抓取里很典型的一类“看起来有用、实际很耗”的入口。它们通常即时生成、返回 200、内容随参数变化,但彼此差异很小。蜘蛛一旦走进去,往往会沿着参数组合一路展开。
为什么这类入口容易被反复抓
- 每个参数组合都是一个独立 URL,蜘蛛没法从地址上判断它有没有价值;
- 页面返回 200 且正文有内容,不会触发软 404 那类过滤;
- 结果页里往往又链接着详情页,蜘蛛会顺着继续走,形成“入口到结果页、到详情页、再回结果页”的循环;
- 排序、每页数量、时间范围这类参数,只是同一批内容换了个顺序。
先分清三类动态入口
站内搜索
关键词由用户输入,理论组合无限。这类页面一般不建议被抓取,也不适合被收录。
筛选与排序
分类、价格区间、品牌、排序方式。其中一部分组合确实对应真实搜索需求,例如“某品类加某品牌”,可以考虑保留少量内容足够的固定组合,其余收口。
日历与时间参数
按年月日翻档的页面容易产生大量空白结果,需要限制可抓范围,或只保留确实有内容的月份。
常见的收口方式与取舍
- robots.txt 屏蔽参数路径:见效快,但被屏蔽的 URL 无法被抓取,页面上的 noindex 也就读不到。如果这个地址已经被外链指向,仍可能出现,只是缺少描述。
- 页面加 noindex:适合希望“可抓但不想收录”的搜索页。要注意 noindex 得能被读到,页面就不能同时被 robots 屏蔽。
- canonical 指向主列表页:适合筛选结果与主列表内容高度重合的情况,有助于合并信号,但不能替代内容质量判断。
- 减少内链入口:很多参数页是被站内链接“喂”出来的。把筛选链接改成点击后才加载,或只在有限场景出现,往往比事后补救更省事。
- 分页单独处理:正常的列表分页是抓取路径的一部分,不宜一刀切屏蔽,真正要限制的是分页上叠加的参数组合。
robots.txt 挡的是抓取,不是收录。想控制收录,通常还是要让页面能被抓到,再给出 noindex 或规范链接。
怎么验证收口有没有效果
- 看抓取日志里带参数 URL 的请求占比,收口前后做对比;
- 用站内搜索或页面查询,检查还有多少结果页被收录;
- 检查 Sitemap 是否混进了带参数的地址;
- 观察主列表页与深层详情页的抓取频次有没有变化。
收口的目标不是把动态页面全部封掉,而是让蜘蛛把有限的抓取次数花在有差异的内容上。哪些组合值得留、哪些只是换个顺序,需要结合站内真实搜索需求和日志数据判断;调整之后也要留一段时间观察,别指望一次改动就立刻见效。