Skip to main content

rssfeed

A simple rss/atom/opml parser

Installation

pip install rssfeed

Get Started

rss parse

import requests
import rssfeed

text = requests.get("https://lobste.rs/rss").text
rssfeed.parse(text)
{
    "name": "Lobsters",
    "lastupdate": 1739824193,
    "items": [
        {
            "title": "Why I'm Writing a Scheme Implementation in 2025 (The Answer is Async Rust)",
            "author": "maplant.com by mplant",
            "timestamp": 1739824193,
            "url": "https://maplant.com/2025-02-17-Why-I'm-Writing-a-Scheme-Implementation-in-2025-(The-Answer-is-Async-Rust).html",
            "content": "<p><a href=\"https://lobste.rs/s/zm1g8r/why_i_m_writing_scheme_implementation\">Comments</a></p>"
        },
        {
            "title": "14 years of systemd",
            "author": "lwn.net via calvin",
            "timestamp": 1739814564,
            "url": "https://lwn.net/SubscriberLink/1008721/7c31808d76480012/",
            "content": "<p><a href=\"https://lobste.rs/s/c6rk0l/14_years_systemd\">Comments</a></p>"
        },
        {
            "title": "Making the Web More Readable With Stylus",
            "author": "wezm.net by wezm",
            "timestamp": 1739757928,
            "url": "https://www.wezm.net/v2/posts/2025/stylus/",
            "content": "<p><a href=\"https://lobste.rs/s/sag0p3/making_web_more_readable_with_stylus\">Comments</a></p>"
        }
    ]
}

rssfeed does not escape HTML tags, which means you had to sanitization content otherwise it may lead to Cross-site scripting attacks, a recommended choice is nh3.

opml parse

import rssfeed
opml = """
<?xml version="1.0" encoding="UTF-8"?>
<opml version="1.0">
  <head>
    <title>demo feeds</title>
  </head>
  <body>
    <outline text="news">
      <outline text="奇客Solidot" xmlUrl="https://www.solidot.org/index.rss" type="rss" />
      <outline text="news-submenu">
        <outline text="Lobsters" xmlUrl="https://lobste.rs/rss" type="rss" />
      </outline>
    </outline>
    <outline text="阮一峰的网络日志" xmlUrl="https://feeds.feedburner.com/ruanyifeng" type="rss" />
  </body>
</opml>
"""
rssfeed.opmlParse(opml)
{
    "default": [
        {
            "name": "阮一峰的网络日志",
            "url": "https://feeds.feedburner.com/ruanyifeng"
        }
    ],
    "news": [
        {
            "name": "奇客Solidot",
            "url": "https://www.solidot.org/index.rss"
        },
        {
            "name": "Lobsters",
            "url": "https://lobste.rs/rss"
        }
    ]
}

Metadata

Release files for rssfeed 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rssfeed 0.5.0
File Size Uploaded
rssfeed-0.5.0.tar.gz 15.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rssfeed 0.5.0
File Interpreter ABI Platform
rssfeed-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 31.7 kB

Release files / rssfeed-0.5.0.tar.gz

Download URL rssfeed-0.5.0.tar.gz
Size 15.5 kB
Tags Source
SHA-256 checksum
How to use checksums
0555b51b962b2fd61352c40c51bcef52701e8652c4c929b1d95c9502a7fc81b6
BLAKE2b-256 checksum
How to use checksums
df47c386282d4f4f5e92de2a5ffa0e025af0cae50808ccd6751116e13231a731
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / rssfeed-0.5.0-py3-none-any.whl

Download URL rssfeed-0.5.0-py3-none-any.whl
Size 16.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
236e92840648187bd6784b916f7d20534bd30c57cd8d7bcba134a68d7df0aa8f
BLAKE2b-256 checksum
How to use checksums
b2550452a76ea3130967eef4bb715775a4ceef17cbb9c88a7d025c44d88e5634
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3

2 release files

0.2

2 release files

0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page