RSS订阅源本质是遵循特定规范的XML文件,用于向订阅者推送网站的最新内容,常见的RSS版本有2.0和1.0,目前最常用的是RSS 2.0格式。一个标准的RSS 2.0 XML文件有固定的结构层级,所有内容都需要包裹在对应的标签中,才能保证订阅器正确解析。

RSS订阅源XML的核心格式结构
RSS 2.0的XML文件首先需要声明XML版本和编码,然后根节点是<rss>,需要指定版本属性,内部包含<channel>节点,所有订阅相关的信息都放在<channel>节点下。<channel>节点下必须包含<title>、<link>、<description>三个基础标签,分别用来标识订阅源名称、对应网站链接、订阅源描述。每个具体的内容条目则放在<item>标签中,<item>标签下也需要包含<title>、<link>、<description>等基础标签,还可以添加<pubDate>表示发布时间,<guid>作为条目的唯一标识。
下面是一个符合RSS 2.0规范的XML示例:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>我的技术博客</title>
<link>https://ipipp.com/blog</link>
<description>分享编程技术和开发经验</description>
<item>
<title>如何创建RSS订阅源</title>
<link>https://ipipp.com/blog/rss-guide</link>
<description>本文详细介绍RSS订阅源的创建方法</description>
<pubDate>Mon, 12 Jun 2023 08:00:00 GMT</pubDate>
<guid>https://ipipp.com/blog/rss-guide</guid>
</item>
<item>
<title>Python基础语法入门</title>
<link>https://ipipp.com/blog/python-basic</link>
<description>讲解Python的核心基础语法知识点</description>
<pubDate>Tue, 13 Jun 2023 10:30:00 GMT</pubDate>
<guid>https://ipipp.com/blog/python-basic</guid>
</item>
</channel>
</rss>
手动创建RSS XML文件的步骤
如果没有编程基础,也可以手动创建RSS XML文件,只需要按照以下步骤操作即可:
- 新建一个文本文件,将文件后缀修改为.xml
- 在文件开头添加XML声明<?xml version="1.0" encoding="UTF-8"?>
- 添加根节点<rss version="2.0">,并在内部添加<channel>节点
- 在<channel>节点中填写订阅源的基础信息,包括<title>、<link>、<description>
- 为每个要推送的内容添加<item>节点,填写对应的标题、链接、描述、发布时间等信息
- 保存文件后,将文件放到网站的根目录或者指定路径下,就可以通过对应URL访问了
通过代码动态生成RSS XML文件
如果网站内容会频繁更新,手动维护RSS XML文件效率很低,这时候可以通过后端代码动态生成RSS内容。以Python为例,我们可以使用内置的xml.etree.ElementTree模块来生成符合规范的RSS XML:
import xml.etree.ElementTree as ET
from datetime import datetime
import pytz
def generate_rss_xml(articles):
# 创建根节点rss
rss = ET.Element("rss")
rss.set("version", "2.0")
# 创建channel节点
channel = ET.SubElement(rss, "channel")
# 添加channel基础信息
title = ET.SubElement(channel, "title")
title.text = "我的技术博客"
link = ET.SubElement(channel, "link")
link.text = "https://ipipp.com/blog"
description = ET.SubElement(channel, "description")
description.text = "分享编程技术和开发经验"
# 添加文章条目
for article in articles:
item = ET.SubElement(channel, "item")
item_title = ET.SubElement(item, "title")
item_title.text = article["title"]
item_link = ET.SubElement(item, "link")
item_link.text = article["link"]
item_desc = ET.SubElement(item, "description")
item_desc.text = article["description"]
pub_date = ET.SubElement(item, "pubDate")
# 格式化发布时间为RFC 822格式
tz = pytz.timezone("GMT")
dt = article["pub_time"].replace(tzinfo=tz)
pub_date.text = dt.strftime("%a, %d %b %Y %H:%M:%S GMT")
guid = ET.SubElement(item, "guid")
guid.text = article["link"]
# 生成XML字符串
tree = ET.ElementTree(rss)
# 声明XML头
xml_str = '<?xml version="1.0" encoding="UTF-8"?>n'
xml_str += ET.tostring(rss, encoding="unicode")
return xml_str
# 测试数据
test_articles = [
{
"title": "如何创建RSS订阅源",
"link": "https://ipipp.com/blog/rss-guide",
"description": "本文详细介绍RSS订阅源的创建方法",
"pub_time": datetime(2023, 6, 12, 8, 0, 0)
},
{
"title": "Python基础语法入门",
"link": "https://ipipp.com/blog/python-basic",
"description": "讲解Python的核心基础语法知识点",
"pub_time": datetime(2023, 6, 13, 10, 30, 0)
}
]
# 生成RSS内容
rss_content = generate_rss_xml(test_articles)
# 可以将内容写入文件或者作为接口返回
with open("rss.xml", "w", encoding="utf-8") as f:
f.write(rss_content)
创建RSS XML文件的注意事项
在创建RSS XML文件时,需要注意以下几点,避免出现解析错误:
- XML标签必须严格闭合,所有标签都要有对应的结束标签,或者使用自闭合写法
- 特殊字符需要转义,比如<要转成<lt;>,>要转成<gt;>,&要转成<amp;>
- <pubDate>的时间格式必须符合RFC 822规范,否则部分订阅器无法正确识别发布时间
- <guid>标签的内容最好是唯一的,通常可以用文章的唯一链接作为guid的值
- 文件的编码要统一使用UTF-8,避免中文内容出现乱码
如果你的网站部署在本地测试环境,比如使用127.0.0.1或者192.168.0.1作为访问地址,生成的RSS链接也可以直接使用这些本地地址,方便调试。