为什么要专门检查分页
栏目页、列表页、归档页内容量往往很大,一页放不下就得翻页。分页本身没有问题,问题出在很多站点的分页结构属于“能点但难抓”:翻页按钮由脚本控制,第 2 页以后没有独立入口,或者每一页的标题完全一样。结果就是列表后半段的内容长期躺在抓取死角里,更新了也等于没更新。
下面按“地址形态 → 链接形式 → 页面信号 → 抓取节奏”的顺序梳理一遍,最后给一个可以直接照做的自查流程。
一、先看分页的地址形态
常见三种写法,各有各的坑:
- 路径式:如 /news/page/2/,结构清楚,容易被识别为同一组页面。
- 参数式:如 /news?page=2,可以用,但要注意和筛选、排序参数叠加时会生出大量组合。
- 锚点或纯脚本加载:地址里的 # 部分通常不参与识别,点击“下一页”地址栏不变,等于所有页面对外看起来都是第一页。
自查方法很简单:把栏目翻到第 2 页、第 5 页,复制地址,新开一个窗口粘贴打开,看是否还是那一页。如果粘出去又回到第一页,说明分页只存在于前端状态里,外部无法单独引用。
分页地址的第一条底线:每一页都能被单独打开、单独分享、单独记录。
二、翻页链接要能被正常跟随
不少模板用容器元素绑定点击事件来做“下一页”,对访客没问题,对爬虫来说就是断路。逐条检查:
- 上一页、下一页是否为带 href 的普通链接,而不是脚本按钮?
- 页码 1、2、3 是否可点,还是只显示当前页加一个“下一页”?
- 从第一页一路点下去,能否真正到达最后一页?有些组件设了页数上限,翻到某个位置就没有入口了。
- 如果用的是“加载更多”,地址有没有同步变化?没有的话,考虑为前若干页保留一组静态分页入口。
三、页面信号别弄错
- 标题与描述:第 2 页以后的标题建议带上页码或内容区间,避免整组页面在结果里长得一模一样。
- canonical:分页页一般指向自身。把所有分页都指向第一页,等于告诉搜索引擎后面几页不必保留。
- 正文重复度:列表里每条通常是标题加摘要,摘要写得太长,相邻分页之间会大面积重合。控制在两三行以内即可。
- robots 规则:除非确实不希望被收录,否则不建议用 robots.txt 直接屏蔽分页目录,那会连里面的文章入口一起切断。
四、抓取节奏与配额分配
分页数量多、更新频繁、单页信息量又小的栏目,最容易占用大量抓取时间却带不来多少价值。可以从几个方向收敛:
- 列表页只放摘要,不要把整篇正文都铺在列表上。
- 筛选、排序、时间范围这类参数组合,只保留少数有稳定访问价值的形态,其余向这几个入口集中。
- 内容确实庞大的栏目,用分类、标签或时间归档做二级切分,而不是让人一路翻到第几十页。
- 定期看服务器日志里分页 URL 的访问情况,长期零访问的分页形态,多半是入口出了问题,而不是内容不值得看。
五、一个可以直接照做的自查流程
- 挑出三个内容量最大的栏目。
- 手动翻到第 2 页、正中间某页和最后一页,记录地址、链接形式、能否直接打开。
- 检查这几页的标题和 canonical 是否合理,有没有整组重复。
- 过一段时间在日志里看这些 URL 有没有被访问,访问频率是否和更新频率相称。
- 如果发现后面几页几乎无人问津,优先排查入口链接和脚本依赖,而不是先去改内容。
分页不是可有可无的边角功能,它直接决定了列表深处的页面有没有被发现的机会。把入口、地址和页面信号这三件事理清楚,比事后反复折腾“为什么新内容一直没动静”要省事得多。