本文介绍一种组合式资讯抓取方案:先利用RSS订阅获取多站点最新文章列表,再通过关键词筛选,最后访问原文链接抓取完整正文。以实际项目配置为例,展示了3个RSS源的启用与禁用管理,说明该方法既非单站爬取,又能灵活扩展国内AI资讯源。
核心问题
如何通过RSS订阅发现与网页正文抓取相结合的方式,从多个来源自动采集资讯?
背景
在构建自动化资讯聚合系统时,常见做法是直接爬取某一网站的首页列表。而本文介绍的项目采用了更灵活、可扩展的组合方案:RSS 发现资讯 + 原文网页抓正文。它不局限于单一站点,而是通过多个 RSS 源获取线索,再深入原文页面提取完整内容。
整体抓取流程
整个流程分为两个阶段:
- 列表发现阶段:通过多个 RSS 源获取最新的文章标题、链接和简短摘要;
- 正文抓取阶段:对每条通过关键词筛选的资讯,发送 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 源,可以轻松扩展数据来源,避免依赖单一网站,同时利用关键词过滤确保内容相关性。后续可根据需要随时调整订阅列表,实现个性化资讯聚合。