大多数站点的详情页不是靠首页直接连出去的,而是靠一层层列表页带着蜘蛛走到。列表页的翻页、加载更多、筛选和排序,决定了蜘蛛在有限的抓取次数里能摸到多少详情页。路径铺得好,新内容上线后被发现的节奏会顺一些;铺得不好,蜘蛛可能翻两页就离开,后面几百条内容一直等着。
分页链接用哪种形式,蜘蛛更容易跟
分页是列表页最基础的导航,常见的几种写法对抓取的影响并不一样。
- 独立路径分页:形如 /list/2/、/list/3/ 的地址,每个页码都是可抓取的独立 URL,蜘蛛顺着“下一页”链接能一路往后走,是目前最省事的形式。
- 参数分页:形如 /list?page=2 的地址同样可以被抓取,但要注意别让排序、来源追踪等参数混进来,否则同一页会出现多个版本。
- 按钮式加载更多:如果“加载更多”只是用 JavaScript 追加内容、不产生新的 URL,蜘蛛通常不会继续往下点,它看到的列表长度就等于第一屏。
- 无限滚动:问题类似,滚动到底部才追加内容,而蜘蛛不会滚动。建议同时给出一组静态分页链接兜底。
分页常见的几个卡点
- 把第 2 页之后的链接统一加了 nofollow,等于把列表的下半段封了起来。
- 分页用 JavaScript 跳转而不是真实的 a 标签 href,蜘蛛未必会执行。
- 页码深到几十上百页后内容重复度高、更新少,蜘蛛自然减少访问。
- “下一页”指向的 URL 每次带一串随机参数,翻页变成一堆新地址。
筛选与排序参数:抓取浪费的主要来源
筛选条件一多,组合出来的 URL 会成倍增长。颜色、尺码、价格区间、排序方式各自相乘,很容易出现几千个只有细微差别的列表页。蜘蛛会把这些地址都当成新页面去发现,抓取被大量消耗在几乎相同的内容上,真正需要更新的详情页反而排到后面。
处理思路通常是分档,而不是一刀切:
- 保留少量有搜索需求、能带来实际访问的筛选组合,给它们稳定的 URL,并写好页面标题和描述。
- 其余组合让页面默认不输出可点击链接,或统一指向一个规范地址,避免蜘蛛顺着参数一路发散。
- 确认某类参数页确实不需要被抓取后,再用 robots.txt 或 robots meta 拦截。注意拦截的是“不抓取”,不等于“不索引”,两者要分清楚。
- 排序参数一般只保留一个默认顺序给蜘蛛,其余顺序不输出链接。
让翻页路径更顺的几件事
- 每页都放“上一页 / 下一页”,并且是真实的 a 标签链接。
- 分页 URL 保持规则、可预测,页码不要写成无意义的随机串。
- 列表里的每一条都直接指向详情页,别让人和蜘蛛再点两层才到内容。
- 把最新、最重要的内容排在前面,蜘蛛翻前几页时就能拿到。
- 列表页本身要有一定更新频率,长期不动的页码抓取优先级会下降。
Sitemap 作为补充入口
分页链接是蜘蛛在站内自然行走的路线,Sitemap 则是直接递上一份清单。两者不冲突:列表页负责日常更新和关联发现,Sitemap 适合放那些不容易从首页翻到的详情页,以及新上线的一批内容。分页地址本身通常不必全部放进 Sitemap,但第一页和几个主要入口值得收录其中。
用日志看路径是否真的走通
判断路径有没有铺好,光看页面不够,还得看蜘蛛实际怎么走。
- 看列表页被访问后,蜘蛛下一步是跳到详情页,还是直接离开。
- 看详情页日志里来源是列表页、Sitemap 还是别的入口。
- 看哪些页码长期没被访问过,判断是链接断了,还是抓取优先级被压低。
列表页的价值不在于页数多,而在于每一页都能把蜘蛛带向一组新的、值得抓的详情页。