5

根据feedparser 文档,我可以将 RSS 提要转化为解析后的对象,如下所示:

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

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

print d.toXML()

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

4

4 回答 4

7

Appended 不是一个非常优雅但有效的解决方案 - 它使用 feedparser 来解析提要,然后您可以修改条目,并将数据传递给 PyRSS2Gen。它保留了大部分的提要信息(无论如何重要的位,有些东西需要额外的转换,例如 parsed_feed['feed']['image'] 元素)。

我把它放在一起作为我正在摆弄的一个小提要处理框架的一部分。它可能有一些用处(它很短 - 完成后总共应该少于 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()
于 2008-10-10T15:33:14.823 回答
1

如果您要阅读 XML 提要,修改它然后再次输出,主要 python wiki 上有一个页面表明 RSS.py 库可能支持您所追求的(它读取大多数 RSS 并且能够输出 RSS 1.0)。不过我没仔细看。。

于 2008-10-08T09:25:41.007 回答
0
from xml.dom import minidom

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

唯一的问题是它不从互联网下载提要。

于 2008-10-08T08:32:52.267 回答
0

作为一种制作提要的方法,PyRSS2Gen怎么样?:)

我没有玩过 FeedParser,但你试过只做 str(yourFeedParserObject) 吗?我经常对具有str方法以将对象输出为文本的各种模块感到惊讶。

[编辑]刚刚尝试了 str() 方法,但它不适用于这个。不过值得一试;-)

于 2008-10-08T09:09:29.353 回答