很多站点的列表页动辄几十上百页,站长常问的一个问题是:蜘蛛真的会一页一页翻到最后吗?大多数情况下不会。但这不代表深层页面就注定发不出去,只是发现路径需要重新设计。
蜘蛛往下翻页的几条常见路径
对蜘蛛来说,从第 1 页走到第 N 页,通常靠三种线索:
- 可见的分页链接:页面上真实存在的 a 标签,蜘蛛顺着下一页或页码链接一步步走。
- URL 规律:当分页参数呈明显递增规律时,蜘蛛可能按自己的节奏跳到中间某几页抽样,而不是老老实实逐页推进。
- 其他入口:标签页、时间归档、站内搜索、Sitemap 里的深层链接,都可能把蜘蛛直接送到某个深页。
这三条路并不是平均分配抓取量的。绝大多数情况下,前几页拿到的抓取最多,越往后越稀疏。
为什么翻页越深,抓取越少
抓取资源在任何搜索引擎那里都是有限的。蜘蛛决定要不要走下一页时,会参考几个现实因素:这一页离首页有多远、页面内容是否高度重复、历史抓取里有多少新 URL 产出、服务器响应是否稳定。当第 20 页和第 3 页展示的结构几乎一样、新链接产出又很少时,继续往下的性价比就很低。
于是日志里常见的形态是:前几页每天被访问多次,中间页偶尔出现,最后几页几个月才来一次,甚至干脆不来。
想让深层 URL 被走到,站点能做什么
分页链接必须是真实链接
用点击事件、滚动加载替换掉 a 标签,等于把后续页码藏起来。即便蜘蛛能渲染页面,把分页做成可点击的真实 URL 仍然是最省事的方式。至少保证下一页和几个关键页码是标准链接。
提高每页的链接密度
一页只放 5 条内容,意味着走 20 页才覆盖 100 个 URL,蜘蛛的每一步都很贵。适当增加列表每页的条目数,让每次抓取产出更多新链接,通常比死磕分页深度更有效。
别用屏蔽的方式处理深层分页
有的站点为省服务器资源,把深层分页 noindex 或用 robots.txt 挡掉。noindex 不会阻止蜘蛛跟随页面上的链接,但会让这一趟抓取失去收录意义;robots.txt 屏蔽则可能直接切断路径,让更后面的页面彻底失去入口。动手前先想清楚:这部分内容是不是真的不需要被发现。
时间归档与标签分页要收口
按年、按月归档,再叠加标签组合,很容易拼出成百上千个结构相似的列表 URL。这类页面内容重复度高,还会稀释抓取预算。可以考虑合并、限制组合数量,或者把真正有价值的部分做成静态专题页。
给重要内容一条更短的路径
与其指望蜘蛛翻 30 页,不如把深层内容通过专题页、热门列表、相关推荐挂到浅层入口上。路径短了,被走到的机会自然增加。
分页响应别拖后腿
深层分页的响应时间如果明显慢于普通页,蜘蛛中途放弃的概率会上升。这类查询常涉及大偏移量,必要时用缓存或游标分页缓解,别让第 50 页因为超时而返回 5xx。
用日志验证,而不是凭感觉
打开服务器日志,把分页 URL 单独筛出来,统计被访问的频次分布:第几页之后访问量断崖下跌,哪类分页几乎无人问津。这些数字比任何猜测都直接。调整之后再对一次,看变化是否朝着预期方向走。
分页深度不是越深越好,也不是越浅越好。关键是让蜘蛛有限的抓取,落在真正有新内容、有新链接产出的页面上。