如何使用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 <em>only</em></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 <span style="background-image:
url(javascript:window.location='http://example.org/')">nasty
tricks</span></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()
- feed_all_keys 持有所有密钥
- feed_keys 持有与提要相关的密钥
- entries_keys 持有与条目(项目)相关的密钥
我已经使用 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 <em>only</em></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 <span style="background-image:
url(javascript:window.location='http://example.org/')">nasty
tricks</span></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()
- feed_all_keys 持有所有密钥
- feed_keys 持有与提要相关的密钥
- entries_keys 持有与条目(项目)相关的密钥