2013-09-15 2 views
2

Я пытаюсь объединить RSS-каналы с помощью python, а затем воспроизвести их на веб-сайте. Изучив рекомендуемые методы я выбрал для следующего кода, который является в основном прямой копией того, что рекомендуется:Слияние RSS-каналов в Python

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 %} 

когда я использую feedparser на кормах по отдельности, я могу передать информацию, но при попытке объединения каналов ничего не показывает. Я импортировал feedparser и Future.

+0

Я думаю, что вы путаете переменные. Они ошибочно названы, что не помогает: «items» становится «записями», а затем вы делаете значения ['feeds'] список записей, а затем пытаетесь ссылаться на feeds.entries? Беспорядочный. – Greg

+0

Это прямая копия кода, рекомендованная в других местах, в контексте конфликта, за исключением того, что я изменил последнее утверждение как значения ['feeds'], а не sorted_entries. элементы и записи являются частью элемента feedparser, который является практически стандартизованным кодом. Я думаю, он должен работать, поэтому я сделал что-то действительно немое, но что? – HenryM

+0

Вы поняли это? Если да, можете ли вы опубликовать решение? –

ответ

0

Я нашел ответ, разбив вывод. Для петли вынимая записи метки и удерживая их на более высоком уровне, так что мой HTML должен быть:

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

теперь работает

0

В вашем сортированном() вызове отсутствует закрытый палец.

+0

Мое сердце прыгнуло, когда я читал это, но в коде он на самом деле там; Я не передал его должным образом. – HenryM

Смежные вопросы