分页为什么值得单独拿出来讲
很多站点首页和栏目页做得不错,但内容其实藏在第二页、第三页之后。蜘蛛顺着链接走到列表页,只看到十条链接,再往下就断了,后面的内容等于没有被发现的机会。入口页把蜘蛛请进来是一回事,能不能让它继续往深处走是另一回事。
蜘蛛池的作用是提供更多入口和链接路径,但如果入口页后面是一堵墙,再多入口也只是把蜘蛛带到同一堵墙前面。分页属于离内容最近的一层结构,这一层做通了,收益往往比多加几个入口更直接。
三种常见的分页形态
1. 传统 URL 分页
形如 /list/2.html 或 /list?page=2。这是对蜘蛛最友好的一种:每页都有独立 URL,链接写在 HTML 里,蜘蛛可以顺着 a 标签一路点下去。要注意的是参数写法统一,别一部分用 ?page=,一部分用 ?p=,一部分用 /page/2/,同一份内容被拆成好几套 URL,反而增加归一负担。
2. 加载更多 / 无限滚动
点一下按钮或者滚到底部才加载下一批,内容靠 JS 请求接口取回。对用户流畅,对蜘蛛就不一定了:如果按钮只是个 div,第二页的数据也不在初始 HTML 里,蜘蛛看到的就永远是第一页。
3. 上一页 / 下一页链接缺失或不可点
有的分页控件完全由 JS 渲染,有的把翻页做成了 button,还有的只在鼠标悬停时才出现。这些在浏览器里都正常,但对抓取来说约等于没有链接。链接是不是真实存在,比链接好不好看重要得多。
无限滚动想被翻到,通常有几种折中做法
- 首屏之外补一组静态链接:在列表页底部或侧栏,把后续几页的 URL 用 a 标签列出来,即使用户主要靠滚动。
- 分页 URL 可独立访问:让 /list?page=3 直接能打开完整 HTML,而不是必须点按钮才存在的状态。
- 滚动到底时同步改地址:用 history API 把当前批次写进 URL,至少让不同批次的内容各自有可访问地址。
- 列表页保留一条清晰的上级入口:从栏目页、频道页能直接点到分页,不要只能靠首页一路滚下去。
几个容易被忽略的细节
- 分页链接不要全部指向第一页,或者用 JS 统一跳转,那等于告诉蜘蛛这里只有一页。
- 每页放多少条没有标准答案,链接太多会稀释权重,太少则层级过深,按内容量调整即可。
- 翻到最后一页要有明确收尾,返回空列表或者重复第一页内容都不太合适。
- 筛选、排序参数容易生成大量近似 URL,建议对这些组合加 canonical 或直接屏蔽,别让抓取预算耗在重复页上。
- 分页 URL 的生命周期要管住,栏目调整后老的分页地址尽量保留跳转,不要直接留个 404。
一个简单的判断方式:把浏览器 JS 关掉,打开列表页,看看还能不能顺着链接点到第二页、第三页。如果点不到,蜘蛛大概率也点不到。
落地时的检查顺序
先看列表页初始 HTML 里有没有翻页链接,再看这些链接是不是真实的 a 标签、href 是否可直接访问,最后看翻页后的内容是不是真的换了。三步都过了,分页这条路径才算通。至于这些页面最终会不会被收录、多久被收录,取决于内容本身和整体站点质量,分页只解决“能不能被走到”这一段。