如何将RSS反馈回RSS?

时间:2008-10-08 08:26:15

标签: python rss

根据feedparser documentation,我可以将RSS提要转换为解析对象,如下所示:

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

但是我找不到任何显示如何走向另一条路的东西;我希望能够操作'd'然后将结果输出为XML:

print d.toXML()

但是在feedparser中似乎没有任何东西可以朝这个方向发展。我是否必须循环使用各种元素,还是有更快的方法?

4 个答案:

答案 0 :(得分:7)

Appended是一个不是非常优雅,但工作的解决方案 - 它使用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()

答案 1 :(得分:1)

如果您正在阅读XML Feed,请对其进行修改,然后再次输出,这里有a page on the main python wiki indicating that the RSS.py library might support what you're after(它读取大多数RSS并能够输出RSS 1.0)。我没有详细看过它..

答案 2 :(得分:0)

from xml.dom import minidom

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

唯一的问题是它不会从互联网上下载Feed。

答案 3 :(得分:0)

作为制作Feed的方法,PyRSS2Gen怎么样? :)

我没有使用过FeedParser,但是你尝试过做str(yourFeedParserObject)吗?我经常对各种模块感到惊讶,这些模块使用 str 方法将对象输出为文本。

[编辑] 刚尝试了str()方法,它在这个方法上不起作用。值得一试; - )