现状
每个站点的爬取间隔在 sites.yaml 中固定配置(15分钟到8小时)。但实际情况是:
- 某些站点周末不更新,但仍在高频爬取
- 某些站点偶尔才更新,但每 30 分钟就爬一次
- 浪费 Actions 额度,也增加被目标站封禁的风险
改进方案
1. 统计实际更新频率
在 crawl_status.json 中记录每个站点最近 N 次爬取中发现新条目的比率。
2. 动态调整间隔
if new_item_rate < 0.1: # 最近 10 次只有不到 1 次有新内容
interval *= 2 # 降频
elif new_item_rate > 0.5: # 经常有新内容
interval = max(base_interval, interval // 2) # 升频但不超过基础间隔
3. 最低/最高限制
- 最短间隔:15 分钟(避免过于频繁)
- 最长间隔:24 小时(避免完全停止)
4. 夜间自动降频
现有 adaptive_tiers.json 已有降频机制,可以扩展为更精细的时段策略。
预期效果
- Actions 额度节省 30-50%
- 减少目标站点压力
- 高频站点获得更好的时效性
复杂度
中等。需要在 smart_scheduler 中添加反馈回路。
现状
每个站点的爬取间隔在
sites.yaml中固定配置(15分钟到8小时)。但实际情况是:改进方案
1. 统计实际更新频率
在
crawl_status.json中记录每个站点最近 N 次爬取中发现新条目的比率。2. 动态调整间隔
3. 最低/最高限制
4. 夜间自动降频
现有
adaptive_tiers.json已有降频机制,可以扩展为更精细的时段策略。预期效果
复杂度
中等。需要在 smart_scheduler 中添加反馈回路。