RSS 可以理解为网站提供的一份标准化更新清单,程序可以通过它自动获取网站最新发布的内容。
普通网页主要给人阅读:
1 | https://example.com |
而 RSS 地址主要给程序读取:
1 | https://example.com/feed.xml |
RSS 通常使用 XML 格式,内容大致如下:
1 | <rss> |
其中通常会包含文章标题、链接、发布时间、作者和摘要等信息。程序只需要按照固定字段读取,不需要分析网页的排版结构。
为什么使用 RSS?
假设需要关注 20 个技术网站,最直接的方式是每天分别打开这些网站检查更新。RSS 把这个过程变成了:
1 | 多个网站 |
相比直接抓取网页,RSS 最大的优势是结构稳定、解析简单、维护成本低。
网页中的文章标题可能今天是:
1 | <h2 class="article-title"> |
网站改版之后变成:
1 | <div class="post-name"> |
依赖 HTML 结构的爬虫就可能失效,而 RSS 的字段通常相对稳定,更适合长期定时采集。
| 对比项 | 普通网页 | RSS |
|---|---|---|
| 主要使用者 | 人 | 程序 / RSS 阅读器 |
| 格式 | HTML | XML |
| 页面样式 | 有 | 基本没有 |
| 解析难度 | 较高 | 较低 |
| 改版影响 | 较大 | 较小 |
| 主要内容 | 完整网页 | 更新列表和摘要 |
RSS 和 Atom
除了 RSS,还有一种常见的订阅格式叫 Atom:
1 | <feed> |
两者解决的问题基本相同,只是 XML 结构有所区别。
RSS 中一篇文章通常使用:
1 | <item> |
Atom 中则通常使用:
1 | <entry> |
实际开发订阅采集器时,一般会同时兼容这两种格式。
在项目中的使用
“也祝日志”的关注模块使用 RSS 来聚合不同网站的最新内容,大致流程如下:
1 | RSS / Atom |
项目中的 rss.py 会解析 RSS 的 <item> 和 Atom 的 <entry>,提取标题、链接、作者、发布时间、摘要以及唯一标识,再转换成统一的数据结构。
这样无论内容来自哪个网站,后续数据库和 AI 处理流程面对的都是相同格式的数据。
RSS 的局限
RSS 并不是万能的数据来源。不同网站提供的信息完整度差异很大,有些只有标题和链接,有些提供摘要甚至全文,还有一些网站完全不提供 RSS。因此实际的信息采集通常会同时使用多种方式:
1 | RSS / Atom |
有 RSS 时优先使用 RSS,因为它通常比直接抓取 HTML 更稳定;没有 RSS 时,再考虑 API 或专门的网页采集器。
总结
RSS 本质上就是:
网站为程序提供的“最新内容清单”。
它把网页内容转换成统一、结构化的数据,使程序能够低成本地持续获取多个网站的最新更新。对于新闻聚合、技术资讯订阅和内容监控这类场景,RSS 仍然是一种简单而实用的数据来源。
