2

このページに関連付けられているすべてのフィード (RSS、atom など) を抽出するコード スニペット (ここでは言語は重要ではありません) を探しています。

したがってURL、入力は出力list of channelsです。

重要なのは完全性です。つまり、ページに何らかの情報チャネルが関連付けられている場合は、ページが見つかるはずです。

私はできれば、HTML コードで何を見つけるべきか、完全性をカバーするためにどこを見つけるべきかを尋ねています。

ありがとうございました

4

1 に答える 1

4

headhtml ファイルのタグにフィードがあります。そこではlink、関連するコンテンツ タイプとその場所を指定する href 属性を持つタグとして指定する必要があります。

Python を使用してページからすべてのフィード URL を抽出するには、次のようなものを使用できます。

import urllib
from HTMLParser import HTMLParser

class FeedParser(HTMLParser):

    def __init__(self, *args, **kwargs):
        self.feeds = set()
        HTMLParser.__init__(self, *args, **kwargs)

    def handle_starttag(self, tag, attrs): 
        if tag == 'link':
            try:
                href = [attr[1] for attr in attrs if attr[0] == 'href'][0]
            except IndexError:
                return None         
            else:
                if ('type', 'application/atom+xml') in attrs or ('type', 'application/rss+xml') in attrs:
                    self.feeds.add(href)    


def get_all_feeds_from_url(url):
    f = urllib.urlopen(url)
    contents = f.read()
    f.close()

    parser = FeedParser()
    parser.feed(contents)
    parser.close()

    return list(parser.feeds)

ただし、フィードを HTML ページに追加する風変わりな方法をすべてカバーしたい場合は、このコードをかなり拡張する必要があります。

于 2011-09-30T08:39:24.210 に答える