抓取频率不是一个固定值
不少人把蜘蛛来访理解成定时任务,比如每天凌晨来几趟。实际并非如此。同一个站点的抓取节奏会随响应速度、更新频率、站点规模、历史抓取成功率变化,所以「一天来几次」这个问题本身就没有标准答案。
日志里最先要看的三件事
- 会话次数:一天里蜘蛛来几趟,中间隔多久
- 单次抓取量:每趟大约拿走多少个 URL
- 请求间隔与并发:相邻请求相隔几秒,同一秒有几条
把日志按 UA 过滤后按时间排序,这三件事一目了然。并发比总量更值得看:同一秒好几条请求时,服务器瞬时压力远大于请求总数给人的印象。
再看状态码和响应时间
200 之外的记录要分清性质。404 属于正常消耗,蜘蛛发现死链后会逐渐减少访问;5xx 和超时才是危险信号,它们在告诉蜘蛛这个站现在不稳定。响应时间同样重要,如果平均抓取耗时从 200ms 涨到 2s,抓取量往往随之下降。
哪些因素会让蜘蛛放慢
- 响应慢、频繁超时,服务器扛不住并发
- 5xx 比例偏高,蜘蛛判断站点不稳定
- 页面重复、内容稀薄,抓完发现价值有限
- 站点层级太深,URL 只能靠很长的路径被发现
反过来,更新稳定、结构清晰、响应快的站点通常会被抓得更勤。这不是某种奖励,而是效率考量:同样的抓取资源,投给更容易发现新内容的地方更划算。
想调整节奏,能动的开关有哪些
robots.txt 里的 crawl-delay
只有部分爬虫认这个指令,主流搜索引擎的支持并不统一。写上去之后要回日志确认是否真的生效,不要当成唯一手段。
服务器端限速
在 Nginx 或 CDN 层面对特定 UA 限速、限并发,效果直接。但要注意限速与封禁是两回事:返回 429 的意思是稍后再来,返回 403 则容易被理解为拒绝访问。用错状态码,抓取量可能掉得比预想更多。
缓存头与 lastmod
给出准确的 Last-Modified 和 ETag,sitemap 里的 lastmod 只写真实更新时间,能减少蜘蛛做无用功,把有限的抓取用在真正变化的页面上。
抓取速度设置
Search Console 早期的抓取速度调节工具已经下线,现在主要靠搜索引擎自行判断。站点能施加影响的地方,还是落在响应速度和内容更新节奏上。
什么时候该慢下来,什么时候该查原因
服务器被压得喘不过气、日志被蜘蛛刷满影响排查,这类情况适合主动限速。而如果新页面发布一周还几乎没有被抓取记录,先别急着调速度,优先检查:新 URL 有没有可爬取的链接入口、sitemap 是否准确、页面是否需要大量脚本渲染、服务器对新页面的首次响应是否偏慢。
抓取频率更像结果,而不是可以直接拧的旋钮。多数想让蜘蛛多来的问题,根子还在站点自身。
一个可落地的观察方法
- 连续两周导出日志,按天统计蜘蛛请求数、并发峰值和平均响应时间
- 标出发布新内容的时间点
- 记录新 URL 从上线到首次被抓的间隔,看趋势有没有变化
- 对比改动前后的两周数据,再决定是不是要动限速策略
把这几项做成简单表格,比凭感觉判断靠谱得多,也更容易看出问题到底出在抓取端还是站点端。