Python 实现类似PHP的strip_tags函数功能,并且可以自定义设置保留标签


最近在研究 Python ,发现用的还是很不习惯,很多PHP里面很简单的功能在Python 里面都得找半天,而且很多功能都得自己实现。

今天做个采集,需要过滤内容中的标签,搞了一下午,貌似终于搞出来了,测试了下达到了预想的效果,废话不多说贴上代码吧

from html.parser import HTMLParser


def strip_tags(html, save=None):
    result = []
    start = []
    data = []

    def starttag(tag, attrs):
        if tag not in save:
            return
        start.append(tag)
        if attrs:
            j = 0
            for attr in attrs:
                attrs[j] = attr[0] + '="' + attr[1] + '"'
                j += 1
            attrs = ' ' + (' '.join(attrs))
        else:
            attrs = ''
        result.append('<' + tag + attrs + '>')

    def endtag(tag):
        if start and tag == start[len(start) - 1]:
            result.append('')

    parser = HTMLParser()
    parser.handle_data = result.append
    if save:
        parser.handle_starttag = starttag
        parser.handle_endtag = endtag
    parser.feed(html)
    parser.close()

    for i in range(0, len(result)):
        tmp = result[i].rstrip('\n')
        tmp = tmp.lstrip('\n')
        if tmp:
            data.append(tmp)

    return ''.join(data)

使用方法:

    result = strip_tags("""发生的杀毒足球比分直播竞彩足球篮球竞彩
>

  打蛇打七寸,北单7串1。由于北京单场SP值计算规则与竞彩不同,4串1及以下投注购买竞彩更划算,而7串1以上的投注很可能交税,反而不划算。根据计算,北京单场4串1到7串1之间的投注最划算。

""", ['p', 'img']) print(result)
输出结果:

发生的杀毒足球比分直播竞彩足球篮球竞彩				>						

  打蛇打七寸,北单7串1。由于北京单场SP值计算规则与竞彩不同,4串1及以下投注购买竞彩更划算,而7串1以上的投注很可能交税,反而不划算。根据计算,北京单场4串1到7串1之间的投注最划算。


仅保留 和

标签





评论关闭

最新python教程

python~HOT