列表页和分页,是站内大多数内容被发现的通道。栏目页、标签页、专题页、站内搜索结果页,只要条目超过一屏,就会有翻页。平时看抓取总量似乎没什么异常,但翻到第三页之后的地址往往长期没有访问记录——这通常不是蜘蛛不愿意走,而是翻页这条路本身被切断了。
分页最容易断的三个地方
- 翻页靠脚本渲染:页面上只有按钮和点击事件,服务端返回的 HTML 里没有可跟随的链接,客户端读到第一页就到此为止。
- 地址不稳定:分页地址里混入会变化的参数,同一页码今天一个地址、明天又一个,之前访问过的内容无法形成稳定入口。
- 没有明确终点:列表可以无限往后翻,或者最后一页之后仍返回空列表,白白产生一批没有内容的地址。
逐项检查
1. 翻页是不是真正的链接
用最简单的办法验证:在浏览器里关闭 JavaScript,打开列表页,看看“下一页”还能不能点。如果关掉脚本就点不动,说明这一层是脚本生成的,需要改成服务端输出的普通链接,至少保证首页、末页和相邻页码有真实的 <a href>。
2. 分页地址的形态
常见的有两种:路径式(/list/page/2/)和参数式(/list?page=2)。两种都能用,关键是稳定、可预测、可拼接。如果地址里带了会话标识、时间戳、随机串,就会出现同一页多个地址的情况,既浪费抓取,也容易让入口分散。能固定成规则化路径的,尽量固定。
3. 加载更多与无限滚动
无限滚动对访客体验友好,但对抓取不友好:后面的条目只有滚动才会被加载。折中做法是保留一个普通的分页入口,比如在列表底部提供“查看全部”或页码链接,让不执行脚本的客户端也能继续往下走。
4. 分页页面的标题与描述
很多站点所有分页共用同一个标题与描述,看起来像一批重复页面。建议在标题里带上页码或该页的内容特征,比如栏目名加“第 2 页”。描述不必逐页重写,但至少要避免与首页出现完全相同的整段文字。
5. 收录取舍与规范化
分页要不要出现在搜索结果里,没有统一答案。列表页本身的信息价值有限,但它是通向详情页的通道。比较稳的做法是:让分页可以被抓取和跟进,同时把详情页作为主要收录对象;如果确实不想让分页出现在结果里,也要用明确的方式表达,而不是直接阻断抓取。
一份可以照着做的自查清单
- 关闭 JavaScript,确认翻页链接仍然可用。
- 随机抽三个栏目,从第一页点到最后一页,看是否都能到达。
- 检查分页地址是否带随机参数或会话标识。
- 确认列表有明确的结束,不产生空页。
- 核对分页页面的标题是否与首页重复。
- 对照抓取日志,看第二页之后的地址是否有访问记录。
发现问题后怎么改
优先修“翻不动”的问题,也就是把脚本渲染的翻页换成服务端可输出的链接;其次处理地址不稳定,把规则固定下来;最后再考虑标题描述这类细节。改完之后,用日志观察一到两周,看深层分页是否开始出现访问,比只盯总抓取量更有意义。
分页不是装饰,它是内容的第二条腿。列表页翻不动,后面再好的内容也很难被发现。