搜索抓取

分页抓取路径:翻页、查看全部与加载更多的取舍

列表页分页是蜘蛛发现新链接的主要通道。本文讲清分页链接的基本要求、翻页控件的写法、查看全部与无限滚动的取舍,以及如何通过抓取日志判断分页抓取是否真的带出了新页面,而不是把抓取量耗在翻页上。

搜索抓取

分页抓取路径:翻页、查看全部与加载更多的取舍

列表页和归档页往往是蜘蛛发现新 URL 的主要通道,而分页决定了它能走多深。分页没做好,新内容即使发布很久,也可能因为缺少可达链接而一直躺在那里等。

分页链接要满足的三个基本条件

  • 是真正的 a 标签链接,带可访问的 href,而不是 onclick 或纯 div;
  • 每个页码对应一个稳定、可直达的 URL,直接打开第 5 页也能看到第 5 页的内容;
  • 不依赖 Cookie 或会话状态,同一地址每次返回同样的列表。

如果第 2 页之后只能靠 AJAX 追加内容,而地址栏始终不变,蜘蛛拿到的就只有第一页,后面的链接等于不存在。

翻页控件里该放哪些链接

常见做法是同时给出上一页、下一页和若干页码。对抓取来说,“下一页”最有价值,因为它形成一条连续路径;页码则方便蜘蛛直接跳到中段和末段。补上首尾页链接,可以避免它为了到达最后一页而逐页爬完。

页码数量不必太多。列表里显示 1 到 7 页再加一个“末页”通常够用,被省略的中间页码留在后台逻辑里,不要让几百个页码链接堆在页面底部。

“查看全部”页面要不要保留

把整类内容放在一个页面里,确实能让蜘蛛一次抓到更多链接,但页面体积、响应时间和重复内容的问题也会同时出现。折中做法是:只在条目数量可控的栏目启用,并限制条数;数量大时,宁可多留几个分页,也不要做成几万条的超长页面。

无限滚动与“加载更多”

无限滚动对用户友好,对抓取却不友好——蜘蛛执行脚本的能力有限,能看到的往往只有首屏那几条。可行的兼容方式是保留一套普通分页 URL 作为后备,并把首屏之外的链接以静态形式放在页面里;“加载更多”按钮背后的地址也应该是可直接访问的链接。

不必依赖 rel=prev/next

搜索引擎已不再把 prev/next 当作索引信号,但也没必要专门去删。真正起作用的是页面之间是否存在可点击的链接路径。把精力放在链接本身可用、URL 稳定上,比纠结这两个属性更实际。

翻页抓取的顺序和上限

蜘蛛对深层分页的抓取会明显减少,通常越靠后的页越难被频繁回访。因此:

  1. 把最重要的内容放在列表前几页,不要靠按时间倒序把优质内容压到深处;
  2. 控制分页总数,避免日历页、空筛选结果页产生大量无意义分页;
  3. 列表页本身不承载主要内容价值时,不必强求每页都被频繁抓取,用 Sitemap 或内链把重要详情页直接暴露出来更有效。
分页是一条通道,不是内容本身。如果日志里显示蜘蛛大量抓取翻页 URL,却没有带出新的详情页,就该检查是不是翻页太多、太深,或者详情页缺少其他入口。

回到日志里验证

调整之后,可以从访问记录里看几件事:翻页 URL 的抓取占比、每次抓取是否带出新的详情页地址、深层页码的抓取频率是否下降。列表页抓取量高并不等于效果好,关键是这些抓取有没有转化成对新内容的发现。配合稳定的服务器响应和清晰的 Sitemap,分页路径才能真正发挥作用。