Reading RSS with Python
Last updated October 17, 2017
On my other personal website, briancaffey.com, I have a blog. The content on that blog has mostly mirrored what I put on this github pages site, briancaffey.github.io. I want to display my most recent blog posts from briancaffey.github.io on briancaffey.com, and to do this I will be using the RSS feed that comes with a Jekyll site. This should be pretty simple, we are going to use the requests
librrary, as well as the feedparser
library.
Here are some docs on how to use feedparser
, it is very simple.
First, install it with:
pip install feedparser
Here's the setup that I will be using in utility a function that will be imported to views.py
and called in the home()
function that renders the homepage for briancaffey.com:
import feedparser
def get_blog_posts(number_of_posts):
url = "http://briancaffey.github.io/feed"
feed = feedparser.parse(url)
posts = feed['items'][:number_of_posts]
return posts
Next, in views.py
, we just need to import the function, call it with the number of articles we want to show, save the returned value to a variable and then pass that to context
:
from utils import get_blog_posts
def home(request):
...
posts = get_blog_posts(4)
context = {
...
'recent_posts': posts,
...
}
return render(request, 'home.html', context)
In the context, we can access the following data for each item:
content | description |
---|---|
item "date" | "2004-02-13T22:28:23+08:00" - ISO 8601 date |
item "date_parsed" | (2004,02,13,14,28,23,4,44,0) |
item "title" | title for item |
item "summary" | change summary |
item "link" | URL to the page |
item "wiki_diff" | for wiki, a link to the diff for the page |
item "wiki_history" | for wiki, a link to the page history |
That's it!