分页是蜘蛛走进列表深处的路
列表页、分类页、搜索结果页通常都有分页。对蜘蛛来说,分页链接不只是给用户翻页用的,它还是 URL 发现的重要通道。第一页里的商品、文章、帖子数量有限,后面几页的 URL 往往只能通过“下一页”或页码链接被蜘蛛看到。如果翻页路径断了,蜘蛛可能只抓第一页,后面的内容即使已经发布,也很久不会被发现。
但分页路径能不能走通,不取决于页面上有没有“下一页”几个字,而取决于链接是否以蜘蛛能识别的方式存在。
蜘蛛认什么样的翻页链接
最稳妥的做法是使用标准的 带 href 的 a 标签。蜘蛛拿到 HTML 后,可以直接从 href 里提取 URL。以下几种写法容易让路径中断:
- 用按钮或 div 加 onclick 实现翻页,没有真实 href。
- 翻页链接由 JavaScript 在点击后动态插入,首屏 HTML 里没有。
- 无限滚动只在用户滚动时加载新内容,蜘蛛不会主动滚动。
- 用 nofollow 或 robots.txt 屏蔽分页 URL,蜘蛛可能不再跟进去。
如果站点必须用 JS 渲染分页,至少保证分页链接出现在首屏 HTML 中,或者为列表提供可抓取的分页视图。不要假设蜘蛛会执行所有交互。
canonical 与 noindex:别把后续页挡在门外
分页页之间内容相似,很多站点会用 canonical 或 noindex 处理。这里有一个常见误区:把第二页、第三页的 canonical 全部指向第一页。这样做可能让蜘蛛认为后续页只是第一页的副本,从而减少对它们的抓取。更合理的做法是让每个分页页自 canonical,即 canonical 指向自己。如果确实不希望分页页被收录,可以用 noindex,但 noindex 不等于 nofollow,蜘蛛仍可能抓取并发现其中的链接。要保留 URL 发现能力,就不要把分页链接全部屏蔽。
分页页是否被收录,和它是否被用来发现新 URL,是两件事。可以不让分页页进索引,但不要切断蜘蛛顺着翻页走的路。
分页深度与抓取预算
蜘蛛不会无限翻页。列表有 100 页,不代表蜘蛛会一路翻到第 100 页。它会根据链接权重、抓取预算和页面更新频率决定走多深。如果你希望蜘蛛多翻几页,可以考虑:
- 把重要内容尽量放在前几页,或者提供“按时间排序”“按热度排序”的入口,让新内容更早出现在浅层。
- 用分类页、聚合页作为中间层,避免所有内容都堆在一条分页链上。
- 在 Sitemap 中补充重要分页 URL,帮助蜘蛛发现,但不必把所有分页都放进去。
- 观察日志中分页 URL 的抓取情况,如果第二页之后很少被抓,说明路径或权重有问题。
分页与内链、Sitemap 的配合
分页链接本身就是内链结构的一部分。它应该和其他内链一样,出现在页面中可被抓取的位置,而不是只放在依赖 JS 的组件里。对于内容量大的站点,可以把分页和分类页、标签页结合:分类页负责聚合,分页负责深入列表,Sitemap 负责补充漏掉的 URL。三者分工不同,但目标一致,都是让蜘蛛有路可走。
最后,分页请求数量多,对服务器响应速度更敏感。如果翻页接口慢或经常超时,蜘蛛可能提前结束这条路径。保持分页页面的稳定响应,比单纯增加页码数量更重要。