搜索抓取

列表页翻页与详情页发现:蜘蛛会顺着分页走到第几层

列表页是蜘蛛发现详情页的主要入口之一。传统翻页、加载更多、无限滚动三种形态,对抓取路径的影响不同。本文讨论分页链接怎么写、分页页要不要索引、深层分页是否值得抓,以及如何用 Sitemap 和内链补充详情页的发现路径。

搜索抓取

列表页翻页与详情页发现:蜘蛛会顺着分页走到第几层

很多站点的详情页并不是从首页直接链出去的,而是藏在列表页翻页之后。蜘蛛顺着分类页、标签页、搜索结果页一路往下走,能不能走到深层详情页,分页这一环起了很大作用。

蜘蛛眼里的分页长什么样

同一个列表,前端可以做成三种形态,蜘蛛看到的东西差别很大。

  • 传统翻页:每页有上一页、下一页、页码链接,都是可点击的 a 标签。蜘蛛可以顺着链接逐页往下,路径清晰。
  • 加载更多:点击按钮后通过 JS 拉取下一页内容。如果按钮本身不是链接,蜘蛛通常不会去点,只能看到第一页。
  • 无限滚动:滚动到底部自动加载。蜘蛛不执行滚动,也不会主动触发,后面的列表内容基本不可见。

所以,如果希望蜘蛛发现更多详情页,传统翻页最直接;加载更多和无限滚动则要额外补一条可抓取的路径。

分页 URL 要能独立访问

有些站点的分页只是在当前 URL 上改参数,比如 ?page=2,这没问题,但最好让每个分页地址都能直接打开。蜘蛛拿到 ?page=2 这个 URL 后,如果返回的是和第一页一样的内容,或者被重定向回第一页,它就可能不再继续往后爬。

分页页要不要被索引,是另一个问题。常见做法是:分页页本身可以不索引,但不要切断链接。用 noindex,follow 比用 nofollow 更合适,前者告诉蜘蛛不必收录分页页,但可以继续跟链接;后者会让蜘蛛不再顺着这一页往下发现详情页。如果分页页是筛选参数产生的重复列表,也可以考虑用 canonical 指向主列表,但要注意不要把所有详情页的发现路径一起收掉。

翻到第几页才值得

分页不是越深越好。蜘蛛的抓取资源有限,站点也未必需要让第 200 页的列表被完整抓一遍。更实际的做法是:

  • 把重要详情页通过分类、标签、相关推荐、热门列表等内链,放在较浅的位置。
  • 对时间久远、流量极低的分页列表,可以保留可访问但不必强求抓取。
  • 避免产生大量空列表页,比如筛选组合后没有结果,却仍然返回一个可翻页的列表。
  • 分页参数不要无限组合,否则蜘蛛会陷入参数组合的循环。

如果详情页更新频繁,Sitemap 可以作为补充入口。把新发布或更新的详情页放进 Sitemap,蜘蛛就不必只依赖列表页翻页来发现它们。

服务器与查询性能也会影响分页抓取

分页列表通常需要查数据库、排序、拼装。如果每页查询都很慢,蜘蛛连续翻页时可能遇到超时或 5xx,抓取就会中断。给列表页做缓存、限制每页条数、避免在分页查询里做复杂统计,能让蜘蛛更顺畅地走完路径。分页越深,查询成本往往越高,这也是深层分页不一定要全部放行的原因之一。

用日志看蜘蛛走到哪里

想知道分页有没有起作用,可以看抓取日志里蜘蛛访问了哪些分页 URL,以及详情页是否在合理时间内被访问。常见信号包括:蜘蛛只停在第一页、加载更多按钮后的 URL 从未出现、分页页返回 200 但后续详情页很少被爬。根据这些信号,再决定是补可抓取链接、调整分页索引策略,还是用 Sitemap 和内链把详情页往前挪。

分页是发现路径的一部分,不是唯一入口。把可抓取链接、合理的内链和 Sitemap 配合起来,比单纯加深分页更稳定。