我正在寻找一个代码片段(语言在这里并不重要) 提取与此页面关联的所有订阅源(RSS,原子等)。
因此输入为URL
并输出list of channels
。
重要的是完整性,这意味着页面是否已关联某些信息渠道 应该找到它。
我最好问一下HTML代码中的内容,以及在哪里找到完整性。
谢谢
答案 0 :(得分:4)
您可以在html文件的head
标记中找到Feed。在那里,他们应该被指定为link
标签,其中包含相关的内容类型和指定其位置的href属性。
要使用python从页面中提取所有Feed网址,您可以使用以下内容:
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页面的所有奇怪方式,则此代码必须进行相当多的扩展。