Python删除html页面文字只留html标签用如何实现,python标签,由于想比较同一个网页中某


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

HTMLParser 够用了

#!/usr/bin/env python# -*- coding: utf-8 -*-import HTMLParserdef 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_tagsfrom 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

HTMLParser 够用了

#!/usr/bin/env python# -*- coding: utf-8 -*-import HTMLParserdef 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']

编橙之家文章,

评论关闭