列表页是站内 URL 数量增长最快的地方。一个分类页如果再带上分页参数,很容易从几十个页面扩成几千个。蜘蛛顺着「下一页」一路走下去,看起来是件好事,实际上它往往走到某一页就停了,而那一页之后的内容,长期停在「已发现未抓取」的状态里。
分页为什么会吃掉抓取路径
分页 URL 大多结构相似,页面之间的差异主要是顺序不同,信息增量低,但每一个都要消耗一次请求。当抓取资源有限时,蜘蛛会把力气放在更有区分度的页面上。于是你常看到:列表首页抓得很勤,第二、三页偶尔来一次,第五页之后基本没有记录。
这不一定是处罚,更接近资源分配的自然结果。真正需要留意的是,你希望被发现的详情页,是不是只挂在深处的分页上。
三种常见的分页结构,蜘蛛待遇不一样
只有「下一页」的线性翻页
蜘蛛必须一页一页走才能到达深处,路径长、代价高。第 20 页的详情页,可能几周都等不到一次访问。可以在列表页顶部补少量关键页码,或者把大类拆成子分类,缩短从入口到详情的距离。
页码全量铺开
首页就把 1 到 100 页的链接全部列出来,用户看着方便,但每爬一次列表就要跟进上百个 URL,抓取节奏容易被拉散。更稳的做法是先给前若干页链接,后面的用「下一页」接力。
无限滚动与「加载更多」
如果翻页只靠脚本请求接口、地址栏始终不变,蜘蛛通常拿不到新的 URL。至少要让每次翻页对应一个可访问的地址,或者单独提供一个带分页的备用入口。
顺带一提,早期用来串联分页关系的 rel="next" 与 rel="prev" 提示,主流搜索引擎已经不再作为抓取依据。别指望写上这两个属性,深处页面就会被顺利爬完,链接能不能点开、地址能不能直接访问才是关键。
怎么判断蜘蛛停在了第几页
- 在服务器日志里筛出分页地址,看访问次数随页码递减的曲线在哪一页断开。
- 对照后台「已发现未抓取」的列表,如果大量是深分页下的详情页,问题多半出在路径太长。
- 同时看分页页面的响应时间,慢的分页会让蜘蛛更早收手。
把分页收紧的几种做法
- 限制可翻页的深度,超过一定页数后按时间或其他维度归档,而不是无限翻下去。
- 给详情页安排第二条进入路径,比如相关推荐、标签聚合页、站内搜索结果的静态落地页。
- 分页页面各自指向自身做规范化,避免不同排序参数被当成一批新 URL 反复抓取。
- 分页链接用真实的 a 标签,确保不执行脚本也能取到下一个地址。
- 发现某段分页长期没有抓取记录时,先补入口和缩短路径,再考虑其他手段。
分页本身没有错,错的是让整站最重要的内容只能从分页底部进入。把关键详情页至少安排一条浅路径,比反复催蜘蛛往下翻更有效。
小结
分页既属于 URL 发现的一环,也是抓取预算最容易流失的一段。定期看一眼分页序列的访问分布,往往比盯着总量数字更有意义。当深处的页面长期没有被抓,优先考虑缩短路径、增加入口,而不是单纯加快频率。