在Python中合并RSS源

时间:2013-09-15 06:33:43

标签: python google-app-engine rss

我正在尝试使用python合并RSS提要,然后将它们播放回网站。研究了推荐的方法后,我选择了以下代码,这些代码基本上是建议的直接副本:

    hit_list = ['http://www.bbc.co.uk/sport/football/teams/cardiff-city/rss.xml','http://www1.skysports.com/feeds/11704/news.xml','http://www.cardiffcity-mad.co.uk/rssfeeds/rssfull.asp']
    # pull down all feeds
    future_calls = [Future(feedparser.parse,rss_url) for rss_url in hit_list]
    # block until they are all in
    feeds = [future_obj() for future_obj in future_calls]

    #Now that you have your feeds, extract all the entries
    entries = []
    for feed in feeds:
        entries.extend(feed["items"])

    values['feeds'] = sorted(entries, key=lambda entry: entry["updated_parsed"])

稍后,我使用以下方式调用网络:

template = jinja_environment.get_template('TeamView.html')
self.response.out.write(template.render(values))

最后,在我的html页面中,我有:

 {% for r in feeds.entries %}
      <a href={{r.link}} target=_blank>{{r.title}}</a>: {{r.description}}
      <br/>
 {% endfor %}

当我在feed上单独使用feedparser时,我可以传递信息,但是当我尝试合并Feed时没有任何显示。我已经导入了feedparser和Future。

2 个答案:

答案 0 :(得分:0)

您的sorted()调用缺少结束语。

答案 1 :(得分:0)

我通过分解输出找到了答案。 for循环取出条目标签并将它们保持在更高级别,因此我的html需要是:

{% for r in feeds %}
      <a href={{r.link}} target=_blank>{{r.title}}</a>: {{r.description}}
      <br/>
{% endfor %}

现在完美运作