python中,如何删除html页面中的文字,只留下html标签?

由于想比较同一个网页中某个标签下的子节点的的相似度
操作对象只是html标签,所以想先删除html中标签之外的文字,以排除干扰。
请问,有什么比较高效快捷的解决方法吗?
注:目前只想到使用正则来解决

阅读 6.6k
2 个回答

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']
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题