如何使用feedparser动态获取python中RSS feed(xml文件)的字段名称?

How to obtain field names of RSS feed(xml file) in python dynamically using feedparser?

我已经使用 python 中的 feedparser 库从特定 URL 中读取 rss 提要。 使用以下代码行在 'fee' 变量中接收提要:

fee =  feedparser.parse('http://www.indiatimes.com/r/python/.rss')

fee 包含列表格式列表中的提要。我们在其中得到的格式和数据很复杂,而且不固定。

我想动态获取此 RSS 提要的字段(键)名称。怎么做?

一些字段名称是固定的,例如 link、日期等。但是我需要代码中所有字段的名称。

首先,您遇到的 link 有一个 404 错误。 所以你不会从那个 link.

得到任何 rss

其次,RSS link 大多数时候以 .rss 文件结尾。

ex: http://timesofindia.feedsportal.com/c/33039/f/533916/index.rss

一旦您获得了实际可用的 RSS link,您所要做的就是:

fee = feedparser.parse('http://timesofindia.feedsportal.com/c/33039/f/533916/index.rss')
for feed in fee.entries:
    print feed.title
    print feed.link

我上面写的是为了获取item元素

让我为您提供一个更好的例子。

import feedparser
rss_document = """
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Sample Feed</title>
<description>For documentation &lt;em&gt;only&lt;/em&gt;</description>
<link>http://example.org/</link>
<pubDate>Sat, 07 Sep 2002 00:00:01 GMT</pubDate>
<!-- other elements omitted from this example -->
<item>
<title>First entry title</title>
<link>http://example.org/entry/3</link>
<description>Watch out for &lt;span style="background-image:
url(javascript:window.location='http://example.org/')"&gt;nasty
tricks&lt;/span&gt;</description>
<pubDate>Thu, 05 Sep 2002 00:00:01 GMT</pubDate>
<guid>http://example.org/entry/3</guid>
<!-- other elements omitted from this example -->
</item>
</channel>
</rss>
"""
rss = feedparser.parse(rss_document)

# Channel Details

print "-----Channel Details-----"

print rss.feed.title
print rss.feed.description
print rss.feed.link

# Item Details

print "-----Item Details-----"
for fee in rss.entries:
    print fee.title
    print fee.summary,
    print fee.link
feeds_all =  feedparser.parse('http://www.indiatimes.com/r/python/.rss')

我不确定它是哪种 json,但是函数 .keys().values() 在它上面运行良好。我所做的是,为了动态获取以前未知的键的名称(上面的答案给出了静态键及其值,您需要提前知道键名),fee.keys() 它起作用了!

因此,答案在以下行中:channel_keys = feeds_all.keys()feed_keys = feeds_all.feed.keys(),用于获取这些键的值,feed_values = feeds_all.feed.values()...

使用下面的代码,它会给你所有的键名,

import feedparser
feeds_all = feedparser.parse(URL)
feed_all_keys = feeds_all.keys()
feed_keys = feeds_all.feed.keys()
entries_keys = feeds_all.entries.keys()
  1. feed_all_keys 持有所有密钥
  2. feed_keys 持有与提要相关的密钥
  3. entries_keys 持有与条目(项目)相关的密钥