Как парсить RSS на Django с выводом на сайт
Достаточно часто требуется получить новости с другого сайта, или произвести обмен данными между своими ресурсами.
Проще всего это сделать на django через парсинг RSS ленты.
Пример для вывода последних новостей с сайта WD5.RU
Файл rssview.py в папке templatetags
# -*- coding: UTF-8 -*-
from django import template
register=template.Library()
import datetime
import feedparser
@register.inclusion_tag('Wd5PageApp/rssfeed.djhtml')
def pull_feed(feed_url, posts_to_show=5):
try:
feed = feedparser.parse(feed_url)
posts = []
for i in range(posts_to_show):
pub_date = feed['entries'][i].updated_parsed
published = datetime.date(pub_date[0], pub_date[1], pub_date[2] )
posts.append({
'title': feed['entries'][i].title,
'summary': feed['entries'][i].summary,
'link': feed['entries'][i].link,
'date': published,
})
except:
pass
return {'posts': posts}
В нужном шаблонном файле данный тег будет вызываться следующим образом
{% load rssview %}
{% pull_feed 'http://wd5.ru/rss.xml' 3 %}
где после pull_feed - адрес rss для парсинга, 3 - количество выводимых записей
Рекомендуется включить кеширование, в шаблонной системе это будет выглядеть как
{% load cache %}
{% cache 1800 feed %}
{% load rssview %}
{% pull_feed 'http://wd5.ru/rss.xml' 3 %}
{% endcache %}