蜘蛛抓取一个页面,并不是把整段 HTML 存下来就完事。它会解析页面、抽取出所有可跟随的链接、做去重,然后把这些 URL 放进待抓队列。真正影响抓取路径的,往往不是链接的总数,而是这些链接出现在页面的什么位置。
蜘蛛拿到页面后先做什么
大致顺序是:下载 HTML、解析 DOM、识别可抓取的 href、过滤掉 nofollow 或 robots 不允许的地址、合并重复项,最后按某种优先级入队。这个优先级没有公开的固定公式,但从抓取日志中能观察到一些规律:位置靠前、上下文清晰、指向内容页的链接,更容易在后续几次抓取中出现。
三种常见链接位置的差别
主导航与面包屑
这两类链接出现在每个页面上,属于全站重复出现的强信号。它们的好处是稳定——蜘蛛走到任何一个页面都能顺着它们回到主干路径,不容易迷路。缺点是数量有限,通常只能覆盖一级或二级栏目,深层页面还是得靠别的方式被发现。
正文中的上下文链接
正文内链是价值较高的一类:它和被链接页面在主题上相关,锚文本通常也更有描述性。蜘蛛在解析正文时,这类链接会带着上下文一起进入队列。如果内链只是堆在文末的“相关推荐”里,效果会打折扣,因为位置和语境都变弱了。
页脚与侧栏的重复链接
页脚和侧栏常被用来铺全站入口,但同一批链接出现在每一个页面上,去重之后并不会带来更多新 URL。它们的主要作用是给低频页面留一个稳定入口,而不是扩大发现范围。
- 导航与面包屑:路径稳定,覆盖面窄
- 正文内链:语境强,适合把重要内容串起来
- 页脚与侧栏:重复度高,适合兜底
- 列表页与聚合页:量大,需要控制质量
锚文本和链接数量会影响判断
锚文本是蜘蛛理解目标页面的重要线索。“点击这里”和“服务器日志分析入门”传递的信息完全不同。前者只能说明这里有个链接,后者能帮助蜘蛛判断目标页大致讲什么,从而在后续抓取时更有把握。
链接数量同样有影响。一个页面铺几百条链接,尤其是其中大量指向筛选参数、排序组合或站内搜索结果时,蜘蛛会挑着走,剩下的可能长时间排在队列后面。与其把所有可能入口都塞进页面,不如把有限的位置留给真正需要被发现的 URL。
Sitemap 与内链的分工
内链决定了蜘蛛在站内“怎么走”,Sitemap 更像是给出一份清单,说明“有哪些页面值得看”。两者并不冲突:内链提供路径和语境,Sitemap 弥补那些没有内链入口、或者入口很深的重要 URL。需要注意的是,Sitemap 里列出但不被任何内链指向的页面,抓取频率通常不稳定。
让重要页面同时拥有内链入口和 Sitemap 记录,比只依赖其中一种更稳妥。
服务器状态会打断整条接力
链接抽取得再干净,如果服务器在蜘蛛访问时频繁返回 5xx、429 或者响应时间过长,抓取节奏就会被打乱。蜘蛛会降低对该站点的抓取频率,之前排好的队列也可能被推迟。抓取路径是一条接力,任何一棒掉在地上,后面的页面都要等。
几个可以落地的检查点
- 在日志里找一找,被频繁抓取的 URL 是不是大多来自导航或某个列表页。
- 抽查重要内页,确认它至少有一条来自正文的上下文链接,而不只是页脚。
- 检查列表页和聚合页的链接数量,把无意义的参数组合收一收。
- 把没有内链入口但确实重要的 URL 补进 Sitemap,并保持更新。
- 关注服务器响应时间与错误码,别让稳定性问题掩盖了结构问题。
抓取路径不是一次设计就能定型的,它会随着栏目调整、模板改版和内容增长不断变化。定期看日志、对照页面上的链接位置,比套用某个固定模板更有用。