蜘蛛一天能抓的页面数量有限,站点上万个 URL 不可能同时被访问。于是它维护一个待抓队列,把地址排进去,再一批批取出来。理解这个排序逻辑,比单纯追问“为什么这个页面还没被抓”更有用——很多情况下,页面不是被拒绝,只是还没轮到。
待抓队列不是先来后到
新发现的 URL 会进入队列,但排序并不完全按发现时间。蜘蛛会综合页面地址、链接来源、站点历史表现、上次抓取结果等信号,估算“抓这个页面的收益”。收益清晰的排在前面,收益含糊的往后压,压得久了就变成长期不抓。
常见的几个排序信号
- 链接位置与点击距离:首页导航、栏目首屏里的链接,通常比页脚、侧栏、第五层目录里的链接更容易被优先安排。
- 被链接的数量与来源:同一个 URL 被站内多处引用,指向它的路径越多,被安排的概率越高。
- 页面历史抓取结果:长期返回 200 且有实质更新的页面,回访更规律;经常空内容、软 404、来回跳转的页面,回访间隔会被拉长。
- 服务器响应:同一批 URL 里,响应快、超时少的路径会被更顺畅地抓完;慢的会在中途被放弃,留到下一轮。
- Sitemap 中的 lastmod:时间写得准确,能提示蜘蛛“这里变了”;如果全站时间都是同一个值,或者频繁刷新,参考价值会下降。
Sitemap 是清单,不是插队凭证
把 URL 写进 Sitemap,只代表告诉蜘蛛“这里有这些地址”,并不等于优先抓取。它的价值在于补充内链覆盖不到的部分,尤其是深层页和孤岛页。但如果内链本身没有指向这些页面,蜘蛛抓完 Sitemap 里的地址后,依然可能因为缺少后续路径而不再回访。
内链决定路径能不能继续
蜘蛛进入一个页面,会沿着其中的链接继续走。如果详情页之间没有任何相互链接,也没有回到列表页的入口,抓取就停在这一层。比较常见的做法是:列表页分页保留可抓链接,详情页之间加相关推荐,面包屑回链到上级栏目。这样从一个入口进来,可以顺带发现一批 URL,而不是抓一个算一个。
回访间隔没有固定值
有人会把“蜘蛛几天来一次”当成固定指标,实际上它跟站点整体更新节奏、页面自身变化频率、服务器稳定性都有关。内容长期不变的页面,回访间隔自然拉长;一直在补充新内容的栏目,回访会更密。与其盯着单页的间隔,不如看整站的抓取量分布是否合理。
可以观察和调整的几件事
- 看抓取日志里请求集中在哪些目录,哪些栏目几乎没有记录,先找差异而不是先猜原因。
- 把重要页面放到离首页更近的位置,减少点击距离,别让关键内容只靠一条深链进入。
- 减少筛选、排序、追踪参数组合出的低价值 URL,避免它们占用队列名额。
- 保持服务器稳定,避免超时和大面积 5xx 打断一次完整抓取。
- 新页面发布后,给它一个站内可见入口,而不是只丢进 Sitemap 就等。
抓取顺序不是可以完全控制的开关,更像一种倾向。能做的,是让重要页面更容易被看见、路径更顺、响应更稳,剩下的交给时间和持续维护。