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

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

由于想比较同一个网页中某个标签下的子节点的的相似度
操作对象只是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
【热门文章】
【热门文章】