由于想比较同一个网页中某个标签下的子节点的的相似度。
操作对象只是html标签,所以想先删除html中标签之外的文字,以排除干扰。
请问,有什么比较高效快捷的解决方法吗?
注:目前只想到使用正则来解决
HTMLParser 够用了
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import HTMLParser
def get_tags(html, l=None):
if l is None:
l = []
class MyHTMLParser(HTMLParser.HTMLParser):
def handle_starttag(self, tag, attrs):
l.append(tag)
def handle_endtag(self, tag):
pass
parser = MyHTMLParser()
parser.feed(html)
return l # 或者 return ' '.join(l) 直接比较字符串
if __name__ == '__main__':
html = """
<div id="footer">
<div class="container">
<ul>
<li><a>链接一</a></li>
<li><a>链接二</a></li>
</ul>
<p>文字段落</p>
<img src="usr/img.png"/>
</div>
</div>
"""
print get_tags(html) # 输出的是开始标签 ['div', 'div', 'ul', 'li', 'a', 'li', 'a', 'p', 'img']
http://snipplr.com/view/50835/stripremove-html-tags-django-utils/
# import the strip_tags
from django.utils.html import strip_tags
# simple string with html inside.
html = '<p>paragraph</p>'
print html # will produce: <p>paragraph</p>
stripped = strip_tags(html)
print stripped # will produce: paragraph