根据feedparser文档,我可以将RSS提要转换为解析对象,如下所示:
import feedparser d = feedparser.parse('http://feedparser.org/docs/examples/atom10.xml')
但我找不到任何显示如何走向另一条路的东西; 我希望能够操作'd'然后将结果输出为XML:
print d.toXML()
但是在feedparser中似乎没有任何东西可以朝这个方向发展.我是否必须循环使用各种元素,还是有更快的方法?
附加是一个不是非常优雅,但工作的解决方案 - 它使用feedparser来解析feed,然后你可以修改条目,并将数据传递给PyRSS2Gen.它保留了大部分的Feed信息(无论如何重要的位,有些东西需要额外的转换,例如parsed_feed ['feed'] ['image']元素).
我把它放在一起作为我正在摆弄的一个小的feed处理框架的一部分..它可能有一些用处(它很短 - 完成时应该少于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()