蜘蛛在站内走路径,靠的是页面上一个个链接。链接有限,抓取就有限;链接可以无限组合出来,抓取就可能变成一场没有终点的旅行。筛选、排序、站内搜索这三类页面,恰恰最容易生成无限组合。
抓取路径为什么会被“放长”
正常的栏目页,一个列表翻到底也就几十页。可一旦列表上叠加了筛选条件,地址就会按组合数增长:颜色 × 尺码 × 价格区间 × 排序方式,任意两项相乘就是成百上千个地址。蜘蛛不会判断“这个组合有没有人搜”,它只看到链接就跟着走。
结果是抓取额度被一堆内容几乎相同的页面吃掉,真正需要更新的文章或商品反而排到了后面。
三种常见的无限空间
筛选与排序链接
把筛选项做成可点击的 a 标签,蜘蛛就会顺着点下去。两个筛选维度还能接受,四个以上基本等于开了一个无底洞。
站内搜索结果页
搜索框提交后的结果页,如果参数可拼,蜘蛛只要找到一个入口,就能造出无数个地址。这类页面对用户有用,对蜘蛛通常只是重复内容。
日历与归档
按日期归档的页面,如果允许无限翻下去,也会形成一条很长的抓取链。归档本身有价值,但不需要让蜘蛛翻到很多年前的第几十页。
路径长度与链接位置
除了无限组合,路径过深也会让 URL 发现变慢。首页到详情页最好控制在三到四次点击以内,导航、面包屑、相关推荐各承担一段。链接放在页面主体里的,通常比藏在页脚或折叠区里的更容易被走到。
列表页还要给蜘蛛明确的下一页入口,而不是只做无限滚动。无限滚动对用户友好,但蜘蛛看不到滚动之后的内容,需要额外提供可抓取的分页链接。
把路径收住的几种做法
- 关掉链接,而不是只关掉页面:筛选项可以用表单或按钮实现,不产生可抓取的 a 标签,蜘蛛就不会沿着走。
- robots.txt 兜底:把明确的参数模式屏蔽掉;注意被屏蔽的地址如果同时是重要页面,要单独放行。
- canonical 指向主版本:让筛选结果页指向对应的主列表页,减少重复地址带来的干扰。
- 保留有限的关键组合:确实有人使用的筛选组合,做成静态地址并加入内链,其余不留入口。
- 给列表页稳定的入口:栏目页、Sitemap、面包屑保持稳定,蜘蛛有固定路线,就不必靠翻组合去找新内容。
怎么判断有没有绕圈
看服务器日志里被抓的地址:如果带参数的 URL 占比很高,而且这些地址的返回内容大同小异,就说明蜘蛛在无限空间里消耗额度。另一个信号是抓取次数涨了,但出现的新 URL 没怎么变。
抓取路径不是越短越好,而是要有边界。有边界的站点,蜘蛛每次来的路线稳定,新内容也更容易被发现。
小结
筛选、排序和站内搜索本身不是问题,问题是它们能不能被无限拼出来。把可抓取的链接数量控制在有限集合里,让内链和 Sitemap 指向真正需要被抓的入口,蜘蛛的抓取路径就会变得可预期,额度也花在更值得的页面上。