很多站长每天看的是蜘蛛来了多少次,却很少追问一句:这些抓取落在了哪些页面上。搜索引擎对单个站点在单位时间内的抓取量有一个大致上限,这个上限不是固定数字,会随站点体量、内容更新频率、服务器响应速度和页面整体质量浮动。搞清楚抓取力气花在哪里,比单纯追求抓取次数更有意义。
先看日志,看力气花在哪
把服务器日志里搜索引擎 UA 的请求导出来,按 URL 归类,按抓取次数排序,通常能看出三种情况。
- 真正需要被发现的详情页、商品页,一天只被访问几次甚至没被访问;
- 带参数的筛选页、排序页、会话参数页,被反复抓了很多次;
- 404、跳转链、软 404 页面占掉了一部分请求,蜘蛛来了却什么也没拿到。
这三类情况如果同时出现,说明抓取预算的分配出了问题,而不是蜘蛛不愿意来。很多时候蜘蛛很勤快,只是把力气花在了不值得的地方。
三类常见的浪费
无效路径反复被访问
站内搜索结果页、空结果的筛选页、已经下线的活动页,如果还有内链指向它们,蜘蛛就会一次次走过去。抓取这些页面既不会带来收录价值,又挤占了访问重要页面的机会。
同一个内容被多条 URL 抓取
列表页的排序参数、追踪参数、大小写和结尾斜杠差异,都会让同一份内容产生多个地址。蜘蛛把这些地址当成不同页面,每个都抓一遍,等于同样的内容消耗了几倍的抓取量。
响应慢拖长了单次抓取
如果每个页面响应都要几秒,蜘蛛在同样的抓取窗口内能走的页面数就会明显减少。慢响应不会直接导致不抓,但会让有限的抓取额度被少数几个慢页面吃掉。
把预算让给重要页面
做减法和做加法同样重要,可以按下面的顺序来。
- 先堵住无效入口:站内搜索页、空归档页、已下线页面,能用 noindex 的就用 noindex;确认整站都不需要的目录,再考虑在 robots.txt 里拦截。注意 robots.txt 是阻止抓取,被拦的页面上的 noindex 也就读不到了,两者不要重叠使用。
- 收敛重复地址:页面统一输出一个首选地址,其余变体用 canonical 指向它;站内链接、Sitemap、分享链接都指向同一个版本。
- 调整内链分布:导航、面包屑、正文相关推荐优先指向需要被抓的页面;标签页、归档页这类入口往往数量庞大,链接要给得克制,减少蜘蛛在低价值清单里打转。
- Sitemap 只放值得抓的 URL:把重要页面放进去,无效页面、跳转页面、已被拦截的页面不要混进去。lastmod 要写真实修改时间,不要每次生成都刷新。
- 提升响应速度:减少重定向层数,压缩页面体积,别让蜘蛛把时间花在等待上。
更新节奏也会影响抓取安排
一个长期不更新的栏目,和一个每天有新内容的栏目,蜘蛛的安排不会一样。内容更新节奏稳定、页面确实有变化的站点,更容易获得稳定的回访。反过来,如果页面只是改了几个无关紧要的字,却频繁更新 lastmod,反而会让蜘蛛白跑几趟,久而久之对这类信号就不那么当真了。
抓取量下降不等于出了大事
抓取次数是波动的。站点整体质量提升、重复页面收敛之后,日志里的总抓取次数甚至可能减少,但重要页面的抓取比例会提高。判断标准不是绝对数量,而是重要页面有没有被稳定抓到。如果核心页面的抓取间隔在缩短、新页面发布后能较快被发现,这个方向就是对的。
抓取预算是结果,不是原因。它反映的是站点的结构、速度和内容质量,而不是一个可以单独去刷的指标。把无效路径清掉,把重要页面接进内链主干,剩下的交给时间。
定期回看一次日志,把抓取次数前几名的 URL 列出来,问自己一句:这几类页面,是我最希望被看到的那几类吗?如果答案是否定的,那就是下一次调整的起点。