You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何快速获取RSS源最新文章标题 避免加载完整订阅源

实现RSS源低耗时部分请求的方案

完全可以实现只请求部分内容拿到标题,RSS是标准XML结构,文章标题基本都出现在文件前半段,你可以用以下两种方案实现:

方案1:HTTP Range请求(服务端支持时效率最高)

通过HTTP请求头的Range字段直接指定需要获取的字节范围,服务端会只返回你需要的内容段,不需要传输完整文件:

  • 核心逻辑:通常前2048字节就可以覆盖绝大多数RSS源的前5~10篇文章标题,足够常规轮询使用
  • 示例代码:
import requests

RSS_URL = "替换为你的RSS源地址"
# 定义需要请求的字节范围,0-2047就是前2048字节
headers = {"Range": "bytes=0-2047"}
resp = requests.get(RSS_URL, headers=headers, timeout=3)

# 206状态码代表服务端支持Range请求,返回了部分内容
content = resp.text if resp.status_code == 206 else resp.text[:2048]
# 后续直接解析content里的<title>标签即可

方案2:流式请求动态中断(通用性更强,不需要服务端支持)

如果目标RSS源不支持Range请求,可以用流式传输的方式逐块接收内容,只要拿到所有需要的标题就直接断开连接,不会继续下载剩余内容:

  • 核心逻辑:开启流式请求后逐块加载内容,边加载边解析标题,满足需求立刻终止请求,避免无用流量消耗
  • 示例代码:
import requests
from xml.etree import ElementTree as ET

def fetch_rss_titles(rss_url, title_count=5):
    buffer = ""
    titles = []
    # 开启流式请求,不预先加载完整响应
    with requests.get(rss_url, stream=True, timeout=3) as resp:
        resp.encoding = resp.apparent_encoding
        # 每次只加载128字节,你可以根据需求调整块大小
        for chunk in resp.iter_content(chunk_size=128, decode_unicode=True):
            buffer += chunk
            # 尝试解析当前缓冲区的XML提取标题
            try:
                root = ET.fromstring(buffer)
                # 同时适配RSS2.0和Atom格式的标题字段
                items = root.findall(".//item") + root.findall(".//{http://www.w3.org/2005/Atom}entry")
                for item in items:
                    title_tag = item.find("title") or item.find("{http://www.w3.org/2005/Atom}title")
                    if title_tag is not None and title_tag.text not in titles:
                        titles.append(title_tag.text)
                        if len(titles) >= title_count:
                            break
                if len(titles) >= title_count:
                    break
            except ET.ParseError:
                # XML未接收完整导致解析失败属于正常情况,继续加载下一块即可
                continue
    return titles

优化建议

  • 如果需要同时轮询大量RSS源,可以把同步的requests换成异步aiohttp的流式请求,并发效率会提升数倍
  • 可以针对你常用的RSS源统计标题出现的字节位置,动态调整请求的字节上限,进一步降低耗时

内容的提问来源于stack exchange,提问作者amiller3513

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:06:04