5

feedparser documentationによると、次のように RSS フィードを解析済みオブジェクトに変換できます。

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

しかし、逆の方法を示すものは何も見つかりません。「d」を操作して、結果を XML として出力できるようにしたいと思います。

print d.toXML()

しかし、その方向に進むためのフィードパーサーには何もないようです。d のさまざまな要素をループする必要がありますか、それとももっと簡単な方法がありますか?

4

4 に答える 4

7

Appended は非常にエレガントではありませんが、有効なソリューションです。feedparser を使用してフィードを解析し、エントリを変更して、データを PyRSS2Gen に渡します。ほとんどのフィード情報が保持されます (とにかく重要なビットです。たとえば、parsed_feed['feed']['image'] 要素など、追加の変換が必要なものがあります)。

私はこれを、私がいじっている小さなフィード処理フレームワークの一部としてまとめました..何らかの役に立つかもしれません.

#!/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 に答える