Skip to content

[建议] 自适应爬取频率 — 根据站点实际更新频率动态调整 #37

@gitfox-enter

Description

@gitfox-enter

现状

每个站点的爬取间隔在 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 中添加反馈回路。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions