列表页是站点里 URL 最集中的地方,也常常是蜘蛛发现内容页的主要入口。分页做得好不好,往往决定蜘蛛能顺着链接走多深。很多站点内容页本身质量不差,但只被发现了前两三页,后面的全部落空,问题通常出在分页的呈现方式上。
三种分页形态,对发现的影响不同
从蜘蛛能否沿着链接继续往下走的角度看,分页大致分三类。
- 真实链接分页:每页都是可访问的 URL,页码用 a 标签指向下一页和若干页码。蜘蛛可以逐页跟进,路径清晰。
- 按钮加载更多:页面上有一个按钮,点击后用脚本拼接参数或路径,把新一页数据插到列表后面。按钮本身不是链接,蜘蛛拿不到下一页地址。
- 无限滚动:滚动到底自动加载。对用户最顺滑,对蜘蛛最不友好,因为地址栏里的 URL 往往从头到尾不变。
后两种形态并不是完全不能被抓,但它们把“下一页在哪”这件事交给了脚本。即使渲染能力在提升,页面上只出现一次、且随用户行为才触发的请求,被顺利抓取到的机会仍然明显偏小。
路径通常断在哪里
断在第一页之后
最常见的情况。首页或分类页的 HTML 里只有第一页的链接,“下一页”由脚本拼出来。蜘蛛抓完第一页,发现不到新地址,路径就到这里结束了。
断在中间某页
有些站点前几页是静态链接,后面改成“加载更多”。这种混合形态最容易被忽略:日志里能看到前面几十页被抓过,但再往后的地址一次都没出现。
断在参数变化
分页参数的写法如果不统一,比如第一页是列表根地址,第二页变成带页码参数的地址,第三页又换成路径形式的分页,或者每次都附带排序、筛选、会话参数,蜘蛛就需要额外判断这些地址是不是同一批内容。路径容易在这里分叉,甚至停住。
让深层列表页重新进入发现路径
- 分页尽量用 a 标签:给“下一页”和页码提供真实可访问的地址,浏览器里能打开的 URL,链接里也应该有。脚本可以叠加交互,但别让它成为唯一的入口。
- “加载更多”补一个静态兜底:按钮点击后可以加载,同时在页面底部保留指向后续页码的链接,或为整个列表提供一个可浏览的分页视图。
- 控制每页数量:每页放多少条,决定了同样的抓取次数能覆盖多少 URL。每页条数过少会拉长翻页链,过多则让单页变重、后续链接被推到更靠后的位置。按内容类型找一个相对稳定的值即可。
- 用分类和标签页分流:如果列表按时间排序,深页内容会不断下沉。建立按栏目、按主题的分类入口,能让老内容保持在较浅的层级。
- 别只靠列表页:Sitemap 是列表之外的另一条发现路径。列表页翻不到的位置,可以在 Sitemap 里补上,但要注意它只是提供地址,并不替代内链结构。
- 筛选结果要谨慎:筛选参数能组合出大量地址,如果没有收敛规则,抓取量会耗在重复内容上,真正的深层列表页反而被稀释。
怎么确认路径有没有断
把服务器日志按抓取次数排一下,看列表页的分页 URL 是成片出现,还是只集中在前几页。再用内链工具抓一次站点,检查“下一页”链接是不是真的写进了 HTML。两边的结论对得上,基本就能判断问题出在链接层还是抓取层。
分页设计的目标不是让蜘蛛“多抓”,而是让每一层内容都有一条能一路走得下去的链接路径。路径完整,抓取才有机会按你规划的结构展开。
列表页翻页看起来是前端交互细节,实际上决定了大量内容页的发现概率。把分页链接做成真实可访问的地址,再配合分类入口和 Sitemap 兜底,通常比反复调整抓取相关参数更直接。