本文介绍一种组合式资讯抓取方案:先利用RSS订阅获取多站点最新文章列表,再通过关键词筛选,最后访问原文链接抓取完整正文。以实际项目配置为例,展示了3个RSS源的启用与禁用管理,说明该方法既非单站爬取,又能灵活扩展国内AI资讯源。

核心问题

如何通过RSS订阅发现与网页正文抓取相结合的方式,从多个来源自动采集资讯?


背景

在构建自动化资讯聚合系统时,常见做法是直接爬取某一网站的首页列表。而本文介绍的项目采用了更灵活、可扩展的组合方案:RSS 发现资讯 + 原文网页抓正文。它不局限于单一站点,而是通过多个 RSS 源获取线索,再深入原文页面提取完整内容。

整体抓取流程

整个流程分为两个阶段:

  1. 列表发现阶段:通过多个 RSS 源获取最新的文章标题、链接和简短摘要;
  2. 正文抓取阶段:对每条通过关键词筛选的资讯,发送 HTTP 请求到原文 URL,抓取完整的正文内容。

流程示意图如下:

RSS订阅源 → 候选资讯列表 → 关键词筛选 → 访问原文URL → 整理成JSON

每个 RSS 源默认最多获取 10 条最新条目(可在 rss_collector.py 中通过 max_per_feed 参数调整)。此外,系统还预留了搜索 API 接口,但当前环境默认未启用。

当前配置的 RSS 源

配置文件位于 config/sources.yaml,一共配置了 3 个 RSS 地址,当前 启用 2 个:

名称 RSS 地址 状态 对应网站
Hugging Face Blog https://huggingface.co/blog/feed.xml 启用 huggingface.co
机器之心 https://www.jiqizhixin.com/rss 已关闭 jiqizhixin.com
量子位 https://www.qbitai.com/feed 启用 qbitai.com

其中“机器之心”因 RSS 解析曾报错,暂时被禁用。因此实际工作的是 Hugging Face Blog 和 量子位 两个源。从这两个源获取文章链接后,正文抓取会分别访问 huggingface.co 和 qbitai.com 上的原文页面。

与单站抓取的区别

  • 不是:只爬取某一个固定网站的全部页面;
  • 而是:从多个 RSS 源聚合最新文章列表,然后通过关键词(如 ComfyUI、大模型、AIGC 等)进一步过滤,最后才到各文章的原始网页提取正文。

例如,之前预览的一篇名为 Towards Speed-of-Light Text Generation... 的文章,来源链路为:Hugging Face Blog 的 RSS 提供链接 → 系统打开 huggingface.co 对应博客页面抓取正文。

如何自定义 RSS 源

若要增删或修改 RSS 源,只需编辑 config/sources.yaml 文件。格式如下:

rss_feeds:
  - name: 站点名称
    url: https://example.com/feed.xml
    enabled: true   # true 启用,false 禁用

修改后,重新运行主程序即可生效。如果需要添加新的国内 AI 资讯源(例如少数派、雷锋网等),只需提供站点名称,可以快速补充进配置文件并测试 RSS 可用性。

总结

该抓取方案兼具效率和灵活性:RSS 保证了资讯发现的轻量快速,网页抓取则弥补了 RSS 摘要信息不足的问题。通过配置多个 RSS 源,可以轻松扩展数据来源,避免依赖单一网站,同时利用关键词过滤确保内容相关性。后续可根据需要随时调整订阅列表,实现个性化资讯聚合。