蜘蛛进入一个站点后,通常是从少数几个已知 URL 开始,再顺着页面里的链接一层层往外走。它并不自带一张站内地图,能走到哪里,取决于页面之间怎么连。理解这一点,就能解释为什么有的页面很快被抓到,有的却长期没有动静。
抓取路径是链接连出来的
搜索引擎先通过外链、Sitemap 和提交入口拿到一批种子 URL,之后主要靠页面内的链接继续发现新地址。种子 URL 数量有限,真正决定覆盖范围的,是这些种子页面往外连了多少、连向哪里。一个详情页如果没有任何页面指向它,即使写在 Sitemap 里,也需要被单独抓取才可能进入队列。
哪些页面在路径里承担中转作用
栏目页和列表页
栏目页通常是站内链接最密集的地方,也是蜘蛛从一批页面走向下一批页面的主要通道。列表页的分页如果只靠脚本按钮渲染,页面上没有可点击的链接,蜘蛛就难以走到后面的分页。
标签页和聚合页
标签页能把同一主题的内容串起来,对蜘蛛来说是额外的发现路径。但如果标签组合随意生成,会出现大量内容相近、彼此链接成环的页面,占用抓取次数却带不来新的 URL。
面包屑与相关推荐
面包屑给出的是稳定的层级路径,相关推荐给出的是横向路径。两者都能缩短从详情页回到列表页的距离,让蜘蛛不必每次都从首页重新分发一遍。
中转页过多或过少都不理想
中转页太少,蜘蛛容易走进死胡同,或者只能靠 Sitemap 兜底;中转页太多,每一轮抓取都在重复经过相同的几层,真正的新 URL 反而排在后面。比较务实的做法是让每条主干路径有明确终点,避免同一批内容被多层聚合页反复包装。
一个朴素的判断标准:从入口到详情页需要点几次,中间经过的页面里有没有内容重复的。
用日志看真实的抓取路径
日志里能看到蜘蛛实际请求了哪些 URL、按什么顺序来。把同一时段的请求按时间排列,往往能看出它在站内走的路线:先抓首页,再抓几个栏目,之后才进入详情页。如果某类页面很少出现在日志中,通常说明指向它的链接不够明显,或者它落在了一个蜘蛛很少回去的分支上。
中转页自身的稳定性同样要关注
抓取在一条路径上是串行的:如果列表页超时返回 5xx,蜘蛛这一轮就走不到后面的详情页。列表页、栏目页这类入口型页面,比单个详情页更值得盯着响应时间和错误率。服务器抖动导致列表页偶尔打不开,损失的不是一个页面,而是这条路径底下的一批 URL。
可以落地的几个检查动作
- 用日志统计各类页面的被抓次数,找出被抓很多但对外链贡献很低的页面;
- 检查列表页分页是否为可点击链接,而不是只靠脚本加载;
- 确认重要详情页至少有一条从栏目页直达的链接,不必绕过多层聚合;
- 关注栏目页、列表页的响应码与响应时间,避免它们成为路径上的断点;
- 把 Sitemap 里的 URL 和日志里的实际请求做对比,找出长期没被访问的部分。
抓取路径更像是站点结构的副产品。链接怎么连,蜘蛛就怎么走;把主干路径理清楚,剩下的细节再慢慢调。