用lxml解析RSS-Feed的痛苦方法不那么痛苦?

时间:2012-06-22 14:11:20

标签: python django lxml atom-feed feedparser

我需要在大多数情况下使用Python,Atom显示RSS-feeds。来自PHP,我可以通过$ entry->链接快速获得值,我发现lxml更精确,更快,尽管很复杂。经过几个小时的探索,我得到了这个使用arstechnica-feed:

def GetRSSFeed(url):
    out = []
    feed = urllib.urlopen(url)
    feed = etree.parse(feed)
    feed = feed.getroot()
    for element in feed.iterfind(".//item"):
        meta = element.getchildren()
        title = meta[0].text
        link = meta[1].text
        for subel in element.iterfind(".//description"):
            desc = subel.text
            entry = [title,link,desc]
            out.append(entry)
    return out

这可以更容易吗?如何直接访问标签? Feedparser通过一行代码完成工作!为什么呢?

2 个答案:

答案 0 :(得分:9)

查看feedparser库。它为您提供了格式良好的RSS对象。

> import feedparser
> feed = feedparser.parse('http://feeds.marketwatch.com/marketwatch/marketpulse/')
> print feed.keys()
['feed',
 'status',
 'updated',
 'updated_parsed',
 'encoding',
 'bozo',
 'headers',
 'etag',
 'href',
 'version',
 'entries',
 'namespaces']

>  len(feed.entries)
    30

答案 1 :(得分:3)

您可以尝试speedparserUniversal Feed Parserlxml的实施。尽管如此仍处于测试阶段。