我正在寻找一个代码片段(语言在这里不重要),将提取与该页相关的所有提要(RSS, atom等)。
输入是URL
,输出是list of channels
。
我希望在HTML代码中找到什么,以及在哪里找到覆盖完整性。
谢谢
您可以在html文件的head
标记中找到提要。在那里,它们应该被指定为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页面的古怪方式,那么这段代码将不得不进行相当多的扩展。