このページに関連付けられているすべてのフィード (RSS、atom など) を抽出するコード スニペット (ここでは言語は重要ではありません) を探しています。
したがってURL
、入力は出力list of channels
です。
重要なのは完全性です。つまり、ページに何らかの情報チャネルが関連付けられている場合は、ページが見つかるはずです。
私はできれば、HTML コードで何を見つけるべきか、完全性をカバーするためにどこを見つけるべきかを尋ねています。
ありがとうございました
このページに関連付けられているすべてのフィード (RSS、atom など) を抽出するコード スニペット (ここでは言語は重要ではありません) を探しています。
したがってURL
、入力は出力list of channels
です。
重要なのは完全性です。つまり、ページに何らかの情報チャネルが関連付けられている場合は、ページが見つかるはずです。
私はできれば、HTML コードで何を見つけるべきか、完全性をカバーするためにどこを見つけるべきかを尋ねています。
ありがとうございました
head
html ファイルのタグにフィードがあります。そこでは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 ページに追加する風変わりな方法をすべてカバーしたい場合は、このコードをかなり拡張する必要があります。