Как преобразовать файл rss в xml в Python?

Мне нужно преобразовать страницу cnn rss (http://rss.cnn.com/rss/edition.rss) в файл XML. Мне нужно отфильтровать тег: title, link и pubDate, а затем экспортировать результат в файл csv.

Я пробовал код, но не работал, потому что в результате отсутствует pubDate.

Я использую этот код:

# Python code to illustrate parsing of XML files
# importing the required modules
import csv
import requests
import xml.etree.ElementTree as ET
def loadRSS():
# url of rss feed
url = 'http://rss.cnn.com/rss/edition.rss'
# creating HTTP response object from given url
resp = requests.get(url)
# saving the xml file
with open('topnewsfeed.xml', 'wb') as f:
f.write(resp.content)
def parseXML(xmlfile):
# create element tree object
tree = ET.parse(xmlfile)
# get root element
root = tree.getroot()
# create empty list for news items
newsitems = []
# iterate news items
for item in root.findall('./channel/item'):
# empty news dictionary
news = {}
# append news dictionary to news items list
newsitems.append(news)
# return news items list
return newsitems
def savetoCSV(newsitems, filename):
# specifying the fields for csv file
fields = ['title', 'pubDate', 'description', 'link', 'media']
# writing to csv file
with open(filename, 'w') as csvfile:
# creating a csv dict writer object
writer = csv.DictWriter(csvfile, fieldnames=fields)
# writing headers (field names)
writer.writeheader()
# writing data rows
writer.writerows(newsitems)
def main():
# load rss from web to update existing xml file
loadRSS()
# parse xml file
newsitems = parseXML('topnewsfeed.xml')
# store news items in a csv file
savetoCSV(newsitems, 'topnews.csv')
if __name__ == "__main__":
# calling main function
main()

Я попытался настроить параметры, и результат такой:

CNN показывает rss как веб-формат, а не как xml, например reddit:

есть идеи о том, как получить эту информацию?


person aaguirre    schedule 22.06.2017    source источник
comment
Учитывая важность отступов в python, я думаю, что это очень поможет, если вы посмотрите на форматирование своего сообщения.   -  person axwr    schedule 22.06.2017


Ответы (1)


Запись XML для упомянутого вами RSS-канала - pubdate, а не pubDate с заглавной буквы D.

Если проблема в том, что pubdate не включен, это может быть частью проблемы.

person Robert Townley    schedule 22.06.2017
comment
Хорошо, этот код состоит из двух частей: первая часть сохраняет XML, а вторая часть работает с этим XML и создает файл CSV с этой информацией. в этот момент я могу создать xml, но у меня возникла ошибка при создании файла CSV. - person aaguirre; 23.06.2017