首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从从Google Reader导出的OPML文件中提取提要urls?

如何从从Google Reader导出的OPML文件中提取提要urls?
EN

Stack Overflow用户
提问于 2011-04-23 10:33:57
回答 4查看 5.2K关注 0票数 8

我正在尝试使用一款名为Rss-Aware的软件。它基本上是一个桌面提要检查器,可以检查RSS提要是否更新,并通过Ubuntu的Notify-OSD系统发出通知。

但是,为了知道要检查哪些提要,您必须在~/.rss-aware/ between s.txt中的文本文件中逐个列出提要url,每个提要url之间有换行。类似于:

代码语言:javascript
复制
http://example.com/feed.xml
http://othersite.org/feed.xml
http://othergreatsite.net/rss.xml

...Seems很简单,对吧?嗯,我想使用的提要列表是从Google Reader导出为OPML文件(它是一种XML)的,我不知道如何解析它来输出提要urls。它看起来应该是非常直截了当的,但我被难住了。

如果有人能用Python或Ruby或其他我能在提示符下快速完成的实现,我会很高兴的。如果有bash脚本就太棒了。

非常感谢你的帮助,我是一个很弱的程序员,我很想学习如何做这个基本的解析。

编辑:还有,我试图从中提取提要urls的here is the OPML file

EN

回答 4

Stack Overflow用户

发布于 2011-10-16 14:35:25

为此,我编写了一个订阅列表解析器。它叫做listparser,它是用Python语言编写的。我刚刚测试了您的OPML文件,它似乎可以很好地解析该文件。它还将使您的提要的标签可用。

如果你曾经使用过feedparser,那么你应该对它的接口很熟悉:

代码语言:javascript
复制
>>> import listparser as lp
>>> d = lp.parse('https://dl.dropbox.com/u/670189/google-reader-subscriptions.xml')
>>> len(d.feeds)
112
>>> d.feeds[100].url
u'http://longreads.com/rss'
>>> d.feeds[100].tags
[u'reading']

可以使用类似于以下内容的脚本创建包含提要URL的文件:

代码语言:javascript
复制
import listparser as lp
d = lp.parse('https://dl.dropbox.com/u/670189/google-reader-subscriptions.xml')
f = open('/home/USERNAME/.rss-aware/rssfeeds.txt', 'w')
for i in d.feeds:
    f.write(i.url + '\n')
f.close()

只需用您的实际用户名替换USERNAME即可。完成了!

票数 5
EN

Stack Overflow用户

发布于 2015-10-31 20:09:42

XML解析非常容易实现,对我来说效果很好。

代码语言:javascript
复制
from xml.etree import ElementTree
def extract_rss_urls_from_opml(filename):
    urls = []
    with open(filename, 'rt') as f:
        tree = ElementTree.parse(f)
    for node in tree.findall('.//outline'):
        url = node.attrib.get('xmlUrl')
        if url:
            urls.append(url)
    return urls
urls = extract_rss_urls_from_opml('your_file')
票数 4
EN

Stack Overflow用户

发布于 2011-04-23 12:26:41

因为它是一个XML文件,所以可以使用XPath查询来提取urls。在XML文件中,看起来rss feed urls存储在xmlUrl属性中。XPath expression //@xmlUrl将选择该属性的所有值。

如果你想在你的网络浏览器中测试一下,你可以使用online XPath tester。如果想要在Python语言中执行这个XPath查询,可以使用this question explains how to use XPath in Python。此外,lxml文档中的a page on using XPath in lxml可能会有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5761771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档