8

使用しようとしているRss-Awareというソフトウェアがあります。基本的には、RSSフィードが更新されているかどうかをチェックし、UbuntuのNotify-OSDシステムを介して通知を行うデスクトップフィードチェッカーです。

ただし、チェックするフィードを確認するには、〜/ .rss-aware / rssfeeds.txtのテキストファイルにフィードURLを次々にリストし、各フィードURLの間に改行を入れてリストする必要があります。何かのようなもの:

http://example.com/feed.xml
http://othersite.org/feed.xml
http://othergreatsite.net/rss.xml

...かなり単純なようですよね?使用したいフィードのリストは、GoogleリーダーからOPMLファイル(XMLの一種)としてエクスポートされます。フィードのURLを出力するためにそれを解析する方法がわかりません。それはかなり簡単なはずですが、私は困惑しています。

誰かがPythonやRubyでの実装、またはプロンプトからすばやく実行できる何かを提供できればと思います。bashスクリプトは素晴らしいでしょう。

助けてくれてありがとう、私は本当に弱いプログラマーであり、この基本的な構文解析を行う方法を学びたいと思っています。

編集:また、これは私がフィードURLを抽出しようとしているOPMLファイルです。

4

4 に答える 4

5

私はまさにこの目的のためにサブスクリプションリストパーサーを作成しました。これはlistparserと呼ばれ、Pythonで記述されています。OPMLファイルをテストしたところ、ファイルが完全に解析されているようです。また、フィードのラベルも利用できるようになります。

feedparserを使用したことがある場合は、インターフェースに精通している必要があります。

>>> 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を使用してファイルを作成することができます。

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実際のユーザー名に置き換えるだけです。終わり!

于 2011-10-16T06:35:24.993 に答える
4

XML 解析は実装が非常に簡単で、私にとってはうまく機能しました。

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')
于 2015-10-31T12:09:42.120 に答える
2

これは XML ファイルであるため、XPathクエリを使用して URL を抽出できます。XML ファイルでは、RSS フィードの URL がxmlUrl属性に格納されているようです。XPath 式//@xmlUrlは、その属性のすべての値を選択します。

Web ブラウザーでこれをテストする場合は、オンライン XPath テスターを使用できます。この XPath クエリを Python で実行する場合は、この質問で Python で XPath を使用する方法について説明します。さらに、lxml ドキュメントには、lxml での XPath の使用に関するページがあり、役立つ可能性があります。

于 2011-04-23T04:26:41.070 に答える
0

正規表現を使用することもできます。次の検索と置換の正規表現を使用して、Google Reader OPML エクスポートを Firefox HTML ライブ ブックマーク インポートに変換しました。

^\s+<outline.*?title="(.*?)".*?xmlUrl="(.*?)".*?htmlUrl="(.*?)".*?/>
<DT><A FEEDURL="$2" HREF="$3">$1</A>
于 2012-07-09T19:44:53.147 に答える