站点运营

站点运营:分页与加载更多自查,别让列表页把蜘蛛困在循环里

分页和加载更多是列表页的常见交互,也容易让蜘蛛在地址、参数和翻页路径上绕圈。本文从分页地址、翻页序列、加载更多、排序参数、空结果页等角度整理一份自查清单,帮助站长减少重复抓取,把入口留给真正需要被发现的详情页。

站点运营

站点运营:分页与加载更多自查,别让列表页把蜘蛛困在循环里

列表页是站内链接最密集的地方,也是蜘蛛最容易绕圈的地方。分页、翻页、加载更多、排序筛选,这些交互在用户体验上很常见,但如果没有把地址和入口设计清楚,蜘蛛可能会在几十个相似列表之间反复爬,而真正有价值的详情页反而没被及时访问。这份自查不针对某个具体框架,主要帮你看清列表页的抓取路径。

先分清分页的几种形态

不同实现方式,对蜘蛛的含义不一样。先盘点站内列表页有哪几种:

  • 静态路径型:/news/page/2/、/list/2.html,地址固定,最容易理解。
  • 参数型:/news?page=2、/list?p=2,参数名和参数值要稳定。
  • 按钮加载型:点击加载更多后追加内容,地址可能不变。
  • 无限滚动型:滚动自动加载,地址通常不变。
  • 筛选排序型:/list?sort=new&page=3,参数组合容易膨胀。

把形态列出来之后,再判断哪些地址应该被抓、哪些只是用户操作,问题会清楚很多。

分页地址要可预测、可终止

蜘蛛通常不会点击按钮,它依赖链接。分页地址最好有规律:上一页、下一页、页码,都能通过普通链接到达。不要只依赖 JavaScript 事件绑定,否则蜘蛛可能只看到第一页。

  • 翻页链接使用标准 a 标签,href 指向真实地址。
  • 页码递增清晰,不要出现 page=0、page=1、page=1&p=1 并存。
  • 最后一页不要继续输出下一页链接,避免形成死循环。
  • 每页数量保持稳定,突然从 20 条变成 200 条会让地址含义变化。

如果列表页有 canonical,要指向该页自身,而不是全部指向第一页。已有文章专门讲过 canonical,这里只提醒:分页页不是重复内容,别用规范标签把它们合并掉。

加载更多与无限滚动:给蜘蛛留一条普通链接

加载更多和无限滚动对用户友好,但对抓取不友好。如果内容只在点击或滚动后出现,蜘蛛可能拿不到后续条目。常见做法是保留一个分页入口,例如查看全部链接到 /list?page=2,或者使用可被抓取的静态分页作为兜底。

能点击出来的内容,最好也能通过 URL 直接访问。这一点比纠结用哪种前端框架更重要。

如果确实使用无限滚动,可以在页面底部放一个查看更多链接,指向普通分页地址;也可以在 sitemap 中提交列表页的后续分页地址,但不要把所有页码都塞进去,优先提交有代表性的前几页。

空结果页、排序参数和翻页循环

列表页常见的浪费抓取场景有三种:

  1. 空结果页:筛选条件组合后没有内容,页面仍返回 200,蜘蛛会继续抓。建议对无结果页返回合适的状态,并给出返回入口。
  2. 排序参数:按时间、热度、价格排序,同一批内容产生多个地址。可以只保留默认排序可抓,其他排序用 nofollow 或 robots.txt 限制,但要注意不要误伤正常页面。
  3. 翻页循环:列表底部的上一页和下一页互相指向,或者页码超出总页数仍返回内容。检查总页数计算,超出范围返回 404 或跳到最后一页。

这些场景不一定影响用户,但会消耗抓取资源。抓取预算有限时,蜘蛛在列表页多待一会,详情页就可能少抓一个。

一份可执行的自查清单

  1. 打开列表第一页,查看源码里是否有指向第二页的普通链接。
  2. 手动把页码改成 2、3、最后一页,看返回内容是否正确,是否出现重复或空白。
  3. 检查加载更多按钮对应的地址,能否直接复制到新标签打开。
  4. 用抓取工具模拟访问,确认不是只拿到空壳或骨架屏。
  5. 检查排序和筛选参数,看是否会产生大量无内容地址。
  6. 查看服务器日志中列表页的抓取频率,如果某几个参数被反复抓,考虑收敛。
  7. 确认分页页的标题、描述是否自动带上了页码,避免所有页标题完全一样。

把入口留给详情页

列表页的职责是发现和分发,不是把所有组合都展示给蜘蛛。分页地址稳定、翻页有终点、加载更多有普通链接兜底、空结果和排序参数有边界,蜘蛛的路径就会清楚很多。做完这些自查,再回头看日志,你可能会发现列表页的重复抓取少了,详情页的发现更顺了。这不是一次就能做完的事,栏目改版、模板调整后都值得重新检查一遍。