2017-06-22 89 views
0

我需要將頁面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

回答

1

RSS源,你提到的XML項pubdate,不pubDate以大寫D.

如果問題是pubdate的沒有被包括在內,這可能是問題的一部分。

+0

好的,這段代碼有兩部分,第一部分保存xml,第二部分使用這個XML並使用這些信息創建一個CSV文件。在這一刻我可以創建XML,但我創建CSV文件時出錯。 – aaguirre