站点小的时候,蜘蛛每天来几次,页面少,基本都抓得完,很少需要考虑抓取预算这件事。等站内页面上到几千、几万,尤其是加上筛选、排序、分页、日历这类会批量生成 URL 的功能之后,问题就会浮现:蜘蛛每天都来,但抓的都是些没流量的页面,真正想被收录的新内容反而排不上队。
抓取预算到底是什么
它不是搜索引擎给每个站点发的固定配额,而是一个相对结果。站点速度、内容更新频率、页面质量、链接结构,都会影响蜘蛛愿意在你这儿花多少时间。可以粗略理解成:蜘蛛每天能在你的站点上走多少步,这些步数用在了哪些页面上。
预算被浪费,通常不是因为页面太多,而是因为值得抓的页面和不值得抓的页面混在一起,蜘蛛分不出来。
常见的浪费来源
- 站内搜索结果的 URL 被大量生成,每个关键词一个地址,内容稀薄。
- 筛选、排序、视图切换参数叠加,同一批商品能拼出几十上百个网址。
- 日历、日期归档页只翻页不更新,内容长期没有变化。
- 分页翻到很深的位置,后面的页码几乎没人访问,也没有独立价值。
- 站点地图里塞进了本来不希望被收录的页面。
- 5xx 和长时间无响应的地址被反复重试,占掉大量请求次数。
怎么自查
第一步:看日志,而不是只看报表
后台统计工具给的是抽样结果,服务器日志才是原始记录。可以按蜘蛛 UA 过滤,统计一段时间内的请求总数、URL 分布和返回码分布。重点看两件事:哪些目录被抓得最多,以及这些目录带来了多少自然流量。抓取量和流量严重不成比例的地方,就是浪费最集中的地方。
第二步:统计返回码
- 大量 404:说明站内还在指向已经删除的页面。
- 大量 301、302:跳转链太长,蜘蛛要多花几步才能到正文。
- 大量 5xx 或超时:服务器扛不住,整体抓取量会被压缩。
- 大量 200 但内容重复:多半是参数和规范链接没处理好。
第三步:核对 sitemap 与 noindex
站点地图里列出的 URL,应当是你希望被收录的那一批。如果里面混着搜索结果页、购物车、用户中心、已下线的活动页,等于主动把蜘蛛引到低价值位置。反过来,已经用 noindex 标记的页面,就不要再写进 sitemap,两个信号互相打架,只会让判断变得更慢。
处理思路
发现问题之后,处理方式大致分三类:
- 挡住不该抓的:对参数页、搜索结果页、没有价值的排序视图,用 robots.txt 屏蔽抓取,或者用 noindex 让已收录的页面慢慢退出。注意两者用途不同:robots.txt 能减少抓取,但被屏蔽的页面如果已经被收录,搜索引擎看不到页面上的 noindex 标记;对已经收录的页面,优先用 noindex。
- 合并重复的:参数只保留必要的那几个,其余通过规范链接指向主版本,内部链接统一指向规范地址,不要再往参数版本上加权。
- 把重要的推上去:核心栏目减少点击层级,从首页和上级栏目给出稳定入口;新内容发布后第一时间在站内被链接到,并让 sitemap 的 lastmod 如实反映更新。
抓取预算是相对的。你把低价值页面清理掉,蜘蛛自然会把时间挪到有价值的页面上;但如果站点本身响应慢、经常报错,清理得再干净,也没多少请求可用。
多久看一次
页面规模不大时,半年看一次日志足够了。如果站点在持续上新,或者刚上线了会批量生成 URL 的功能(筛选、站内搜索、多语言、地区切换),建议上线后两周内就看一次日志,确认新生成的地址没有失控。
把日志分析当成固定动作,而不是出问题才临时翻记录,很多抓取上的异常,在演变成事故之前其实都能被看出来。