当前位置: 移动技术网 > IT编程>脚本编程>Python > python 去除html标签的几种方法

python 去除html标签的几种方法

2019年04月19日  | 移动技术网IT编程  | 我要评论

河南省人事考试中心网,寝乱义母全集,邪恶天使与能量战神

#! /usr/bin/python
# -*- coding:utf-8 -*-
'''
created on 2013-12-18

@author: java
'''
import re
from htmlparser import htmlparser
class filtertag():
    def __init__(self):
        pass
    def filterhtmltag(self,htmlstr):
        '''
        过滤html中的标签
        :param htmlstr:html字符串 或是网页源码
        '''
        self.htmlstr = htmlstr
        #先过滤cdata
        re_cdata=re.compile('//]*//\]\]>',re.i) #匹配cdata
        re_script=re.compile(']*>[^',re.i)#script
        re_style=re.compile(']*>[^',re.i)#style
        re_br=re.compile('')#处理换行
        re_h=re.compile(']*>')#html标签
        re_comment=re.compile(']*-->')#html注释
        s=re_cdata.sub('',htmlstr)#去掉cdata
        s=re_script.sub('',s) #去掉script
        s=re_style.sub('',s)#去掉style
        s=re_br.sub('\n',s)#将br转换为换行
        blank_line=re.compile('\n+')#去掉多余的空行
        s = blank_line.sub('\n',s)
        s=re_h.sub('',s) #去掉html 标签
        s=re_comment.sub('',s)#去掉html注释
        #去掉多余的空行
        blank_line=re.compile('\n+')
        s=blank_line.sub('\n',s)
        filtertag = filtertag()
        s=filtertag.replacecharentity(s)#替换实体
        print  s
    
    def replacecharentity(self,htmlstr):
        '''
        替换html中常用的字符实体
        使用正常的字符替换html中特殊的字符实体
        可以添加新的字符实体到char_entities 中
    char_entities是一个字典前面是特殊字符实体  后面是其对应的正常字符
        :param htmlstr:
        '''
        self.htmlstr = htmlstr
        char_entities={'nbsp':' ','160':' ',
                'lt':'','62':'>',
                'amp':'&','38':'&',
                'quot':'"','34':'"',}
        re_charentity=re.compile(r'&#?(?p\w+);')
        sz=re_charentity.search(htmlstr)
        while sz:
            entity=sz.group()#entity全称,如>
            key=sz.group('name')#去除&;后的字符如(" "--->key = "nbsp")    去除&;后entity,如>为gt
            try:
                htmlstr= re_charentity.sub(char_entities[key],htmlstr,1)
                sz=re_charentity.search(htmlstr)
            except keyerror:
                #以空串代替
                htmlstr=re_charentity.sub('',htmlstr,1)
                sz=re_charentity.search(htmlstr)
        return htmlstr
    
    def replace(self,s,re_exp,repl_string):
        return re_exp.sub(repl_string)
    
    
    def strip_tags(self,htmlstr):
        '''
        使用htmlparser进行html标签过滤
        :param htmlstr:
        '''
        
        self.htmlstr = htmlstr
        htmlstr = htmlstr.strip()
        htmlstr = htmlstr.strip("\n")
        result = []
        parser = htmlparser()
        parser.handle_data = result.append
        parser.feed(htmlstr)
        parser.close()
        return  ''.join(result)
    
    def striptagsimple(self,htmlstr):
        '''
        最简单的过滤html 标签的方法    注意必须是  而不能单纯是
        :param htmlstr:
        '''
        self.htmlstr = htmlstr
#         dr =re.compile(r']+>',re.s)
        dr = re.compile(r']*>',re.s)
        htmlstr =re.sub(dr,'',htmlstr)
        return  htmlstr

if __name__=='__main__':
#     s = file('google.html').read()
    filters = filtertag()
    print filters.striptagsimple("你好")
    
                
                
                
        
        
        
        

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网