Я пытаюсь объединить 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.
Я думаю, что вы путаете переменные. Они ошибочно названы, что не помогает: «items» становится «записями», а затем вы делаете значения ['feeds'] список записей, а затем пытаетесь ссылаться на feeds.entries? Беспорядочный. – Greg
Это прямая копия кода, рекомендованная в других местах, в контексте конфликта, за исключением того, что я изменил последнее утверждение как значения ['feeds'], а не sorted_entries. элементы и записи являются частью элемента feedparser, который является практически стандартизованным кодом. Я думаю, он должен работать, поэтому я сделал что-то действительно немое, но что? – HenryM
Вы поняли это? Если да, можете ли вы опубликовать решение? –