2008-10-08 102 views
3

按照feedparser documentation,我可以把一個RSS feed到解析對象是這樣的:如何將RSS反饋轉換爲RSS?

import feedparser 
d = feedparser.parse('http://feedparser.org/docs/examples/atom10.xml') 

,但我找不到任何說明如何走另一條路;我希望能夠做操縱「d」,然後將結果輸出爲XML:

print d.toXML() 

但似乎沒有任何東西在feedparser在那個方向。我將不得不循環各種元素,還是有更快的方法?

回答

5

附加的並不是非常優雅,但工作的解決方案 - 它使用feedparser來解析feed,然後可以修改條目,並將數據傳遞給PyRSS2Gen。它保留了Feed信息的大部分(無論如何,重要的比特位都有,需要額外轉換的東西,例如parsed_feed ['feed'] ['image']元素)。

我把這個一起作爲一個little feed-processing framework我與..這可能是一些使用的擺弄的一部分(這是很短 - 完成後應小於100線的總代碼..)

#!/usr/bin/env python 
import datetime 

# http://www.feedparser.org/ 
import feedparser 
# http://www.dalkescientific.com/Python/PyRSS2Gen.html 
import PyRSS2Gen 

# Get the data 
parsed_feed = feedparser.parse('http://reddit.com/.rss') 

# Modify the parsed_feed data here 

items = [ 
    PyRSS2Gen.RSSItem(
     title = x.title, 
     link = x.link, 
     description = x.summary, 
     guid = x.link, 
     pubDate = datetime.datetime(
      x.modified_parsed[0], 
      x.modified_parsed[1], 
      x.modified_parsed[2], 
      x.modified_parsed[3], 
      x.modified_parsed[4], 
      x.modified_parsed[5]) 
     ) 

    for x in parsed_feed.entries 
] 

# make the RSS2 object 
# Try to grab the title, link, language etc from the orig feed 

rss = PyRSS2Gen.RSS2(
    title = parsed_feed['feed'].get("title"), 
    link = parsed_feed['feed'].get("link"), 
    description = parsed_feed['feed'].get("description"), 

    language = parsed_feed['feed'].get("language"), 
    copyright = parsed_feed['feed'].get("copyright"), 
    managingEditor = parsed_feed['feed'].get("managingEditor"), 
    webMaster = parsed_feed['feed'].get("webMaster"), 
    pubDate = parsed_feed['feed'].get("pubDate"), 
    lastBuildDate = parsed_feed['feed'].get("lastBuildDate"), 

    categories = parsed_feed['feed'].get("categories"), 
    generator = parsed_feed['feed'].get("generator"), 
    docs = parsed_feed['feed'].get("docs"), 

    items = items 
) 


print rss.to_xml() 
0
from xml.dom import minidom 

doc= minidom.parse('./your/file.xml') 
print doc.toxml() 

唯一的問題是它不會從互聯網下載源。

+0

它不會以RSS感知的方式解析它們;所以操縱Feed將比Feedparser難得多 – Simon 2008-10-08 08:41:43

0

作爲製作飼料的方法,PyRSS2Gen怎麼樣? :)

我還沒有玩過FeedParser,但你有沒有嘗試只是做str(yourFeedParserObject)?我經常被各種模塊驚訝,它們只有將文本輸出爲對象的方法。

[編輯]剛剛嘗試過str()方法,它不適用於這個。值得拍攝雖然;-)

+0

我如何將Feedparser的輸出提供給PyRSS2Gen?我試過 r = PyRSS2Gen.RSS2(d) 但這並不起作用。 – Simon 2008-10-08 09:16:39