Python使用正则表达式去除(过滤)HTML标签提取文字功能
程序员文章站
2022-06-22 14:48:05
正则表达式是一个特殊的字符序列,可以帮助您使用模式中保留的专门语法来匹配或查找其他字符串或字符串集。 正则表达式在unix世界中被广泛使用。
下面给大家介绍下python...
正则表达式是一个特殊的字符序列,可以帮助您使用模式中保留的专门语法来匹配或查找其他字符串或字符串集。 正则表达式在unix世界中被广泛使用。
下面给大家介绍下python使用正则表达式去除(过滤)html标签提取文字,具体代码如下所示:
# -*- coding: utf-8-*- import re ##过滤html中的标签 #将html中标签等信息去掉 #@param htmlstr html字符串. def filter_tags(htmlstr): #先过滤cdata re_cdata=re.compile('//<![cdata[[^>]*//]]>',re.i) #匹配cdata re_script=re.compile('<s*script[^>]*>[^<]*<s*/s*scripts*>',re.i)#script re_style=re.compile('<s*style[^>]*>[^<]*<s*/s*styles*>',re.i)#style re_br=re.compile('<brs*?/?>')#处理换行 re_h=re.compile('</?w+[^>]*>')#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转换为换行 s=re_h.sub('',s) #去掉html 标签 s=re_comment.sub('',s)#去掉html注释 #去掉多余的空行 blank_line=re.compile('n+') s=blank_line.sub('n',s) s=replacecharentity(s)#替换实体 return s ##替换常用html字符实体. #使用正常的字符替换html中特殊的字符实体. #你可以添加新的实体字符到char_entities中,处理更多html字符实体. #@param htmlstr html字符串. def replacecharentity(htmlstr): char_entities={'nbsp':' ','160':' ', 'lt':'<','60':'<', 'gt':'>','62':'>', 'amp':'&','38':'&', 'quot':'"','34':'"',} re_charentity=re.compile(r'&#?(?p<name>w+);') sz=re_charentity.search(htmlstr) while sz: entity=sz.group()#entity全称,如> key=sz.group('name')#去除&;后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 repalce(s,re_exp,repl_string): return re_exp.sub(repl_string,s) if __name__=='__main__': str='' # 需要提取的html字符串 str=filter_tags(str) print(str)
总结
以上所述是小编给大家介绍的python使用正则表达式去除(过滤)html标签提取文字功能 ,希望对大家有所帮助
上一篇: 元宵应该冷冻还是冷藏比较好