如何将文件rss转换为python中的xml?

问题描述:

我需要将页面cnn rss(http://rss.cnn.com/rss/edition.rss)转换为XML文件。我需要过滤标签:title,link和pubDate,然后将结果导出到csv文件。如何将文件rss转换为python中的xml?

我尝试了一个代码,但没有工作,因为结果省略了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() 

我tryed配置参数,其结果是这样的:

CNN显示RSS作为网页格式不为XML,例如书签交易:

有关如何获取此信息的任何想法?

+1

鉴于缩进在Python中的重要性,我认为如果你看看你的文章的格式,这将会有很大的帮助。 – Scheme

RSS源,你提到的XML项pubdate,不pubDate以大写D.

如果问题是pubdate的没有被包括在内,这可能是问题的一部分。

+0

好的,这段代码有两部分,第一部分保存xml,第二部分使用这个XML并使用这些信息创建一个CSV文件。在这一刻我可以创建XML,但我创建CSV文件时出错。 – aaguirre