很多站点运营者遇到过这种情况:一个活动页上线时明明挂在首页最显眼的位置,几天后去翻抓取日志,蜘蛛一次都没访问过。不是 robots 挡住了,也不是页面打不开,而是蜘蛛到访的时候,那个入口链接已经被换掉了。
蜘蛛发现链接的前提,是链接还在
搜索蜘蛛不是实时爬虫。一个首页它可能几小时来一次,也可能几天来一次,取决于站点体量、更新频率和抓取预算。它每次来访都会解析当页链接,把没见过的 URL 放进待抓取队列。这意味着:一条链接必须至少被蜘蛛在页面里看到一次,它背后的 URL 才有机会进入队列。
如果某条链接只在页面上挂了六个小时,而蜘蛛恰好这段时间没来,那么它指向的页面就相当于从未被链接过——至少在发现层面是这样。
最容易踩坑的几类临时链接
- 首页轮播与焦点图:运营按排期轮换,一个位置一天换好几批,早期批次可能被完全跳过。
- 限时活动入口:上线两三天就下线,蜘蛛还没排到就消失了。
- 需要登录才能看到的入口:隐藏在账号中心或后台的链接,蜘蛛看不到,页面等于没有入口。
- 短链与带跳转的分享链接:短链服务不在你的控制范围内,跳转链路也不稳定,蜘蛛可能只停在中间那一跳。
- 只在特定时机出现的弹窗、浮层:渲染时机不确定,蜘蛛拿到的版本里可能根本没有这个链接。
链接存活时间与抓取周期怎么错位
抓取周期不完全由你决定,但可以估算。观察日志里蜘蛛对首页和几个主要栏目的访问间隔,取一个典型值。如果这个间隔是三天,而链接只挂一天,那就得假设大概率会被错过。
判断标准很简单:链接的存活时间,要明显长于蜘蛛对该页面的抓取间隔。
还要注意,同一条链接出现在多个位置,命中概率会提高。只放在首页是窗口最窄的方式;放在栏目页、列表页、侧边常驻位,窗口就宽得多。
把"临时入口"变成"可复用入口"
- 设置一个长期存在的聚合页,比如"往期活动""历史专题",每次新内容都往这个页面加链接,而不是只在首页轮换。
- 活动结束后不要直接删页面,把入口从首页撤下但保留在聚合页里,页面本身保持可访问状态。
- 把这类页面写进 Sitemap,即使当前没有站内链接指向,也能给蜘蛛留一条稳定的发现通道。
- 用内链把活动页与相关品类页、内容页互相连起来,让入口不只依赖一个位置。
链接已经下线了怎么办
如果页面还有价值,最直接的办法是在别的页面重新挂上链接,并在下次更新 Sitemap 时把它带上。蜘蛛对"已发现未抓取"的 URL 会有一定记忆,重新给出入口通常比从零开始快一些。
如果页面确实不再需要,让它返回 404 或 410,比留着一个空壳页更清楚。空页会继续被爬,也继续占预算。
怎么验证入口是否真的被看到
在抓取日志里,把目标 URL 的首次访问时间,和它在页面上首次出现的时间做个对比。如果两者相隔很久,说明发现链路偏长;如果目标页始终没有访问记录,而入口页面有被抓记录,那基本可以判断入口出现过又消失了。同时留意蜘蛛对入口页面的访问频次,频次低就意味着窗口期需要设计得更宽。
小结
URL 发现的第一道门是链接,而链接是有寿命的。在安排页面上下线的时候,顺手想一下蜘蛛这个周期里会不会来、来的时候还能不能看到这个入口,很多"蜘蛛不抓我"的问题就不用再逐条排查了。