随记

什么是 RSS?

RSS 可以理解为网站提供的一份标准化更新清单,程序可以通过它自动获取网站最新发布的内容。

普通网页主要给人阅读:

1
https://example.com

而 RSS 地址主要给程序读取:

1
https://example.com/feed.xml

RSS 通常使用 XML 格式,内容大致如下:

1
2
3
4
5
6
7
8
9
10
11
12
<rss>
<channel>
<title>某技术博客</title>

<item>
<title>如何构建一个 RAG 应用</title>
<link>https://example.com/rag</link>
<pubDate>Sat, 06 Sep 2026 10:00:00 GMT</pubDate>
<description>本文介绍 RAG 的基本实现方式</description>
</item>
</channel>
</rss>

其中通常会包含文章标题、链接、发布时间、作者和摘要等信息。程序只需要按照固定字段读取,不需要分析网页的排版结构。

为什么使用 RSS?

假设需要关注 20 个技术网站,最直接的方式是每天分别打开这些网站检查更新。RSS 把这个过程变成了:

1
2
3
4
5
6
7
多个网站
↓
RSS 订阅地址
↓
程序定时读取
↓
统一展示最新内容

相比直接抓取网页,RSS 最大的优势是结构稳定、解析简单、维护成本低。

网页中的文章标题可能今天是:

1
<h2 class="article-title">

网站改版之后变成:

1
<div class="post-name">

依赖 HTML 结构的爬虫就可能失效,而 RSS 的字段通常相对稳定,更适合长期定时采集。

对比项 普通网页 RSS
主要使用者 人 程序 / RSS 阅读器
格式 HTML XML
页面样式 有 基本没有
解析难度 较高 较低
改版影响 较大 较小
主要内容 完整网页 更新列表和摘要

RSS 和 Atom

除了 RSS,还有一种常见的订阅格式叫 Atom:

1
2
3
4
5
6
7
8
<feed>
<entry>
<title>文章标题</title>
<link href="https://example.com/article"/>
<updated>2026-09-06T10:00:00Z</updated>
<summary>文章摘要</summary>
</entry>
</feed>

两者解决的问题基本相同,只是 XML 结构有所区别。

RSS 中一篇文章通常使用:

1
<item>

Atom 中则通常使用:

1
<entry>

实际开发订阅采集器时,一般会同时兼容这两种格式。

在项目中的使用

“也祝日志”的关注模块使用 RSS 来聚合不同网站的最新内容,大致流程如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
RSS / Atom
↓
定时采集
↓
解析文章信息
↓
统一数据格式
↓
写入数据库
↓
AI 摘要与分类
↓
关注页面展示

项目中的 rss.py 会解析 RSS 的 <item> 和 Atom 的 <entry>,提取标题、链接、作者、发布时间、摘要以及唯一标识,再转换成统一的数据结构。

这样无论内容来自哪个网站,后续数据库和 AI 处理流程面对的都是相同格式的数据。

RSS 的局限

RSS 并不是万能的数据来源。不同网站提供的信息完整度差异很大,有些只有标题和链接,有些提供摘要甚至全文,还有一些网站完全不提供 RSS。因此实际的信息采集通常会同时使用多种方式:

1
2
3
4
RSS / Atom
官方 API
第三方 API
网页抓取

有 RSS 时优先使用 RSS,因为它通常比直接抓取 HTML 更稳定;没有 RSS 时,再考虑 API 或专门的网页采集器。

总结

RSS 本质上就是:

网站为程序提供的“最新内容清单”。

它把网页内容转换成统一、结构化的数据,使程序能够低成本地持续获取多个网站的最新更新。对于新闻聚合、技术资讯订阅和内容监控这类场景,RSS 仍然是一种简单而实用的数据来源。