700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Python通过正则表达式去除(过滤)HTML标签 提取文字

Python通过正则表达式去除(过滤)HTML标签 提取文字

时间:2021-09-21 08:40:40

相关推荐

Python通过正则表达式去除(过滤)HTML标签 提取文字

# -*- coding: utf-8-*-import re##过滤HTML中的标签#将HTML中标签等信息去掉#@param htmlstr HTML字符串.def filter_tags(htmlstr):#先过滤CDATAre_cdata=pile('//<![CDATA[[^>]*//]]>',re.I) #匹配CDATAre_script=pile('<s*script[^>]*>[^<]*<s*/s*scripts*>',re.I)#Scriptre_style=pile('<s*style[^>]*>[^<]*<s*/s*styles*>',re.I)#stylere_br=pile('<brs*?/?>')#处理换行re_h=pile('</?w+[^>]*>')#HTML标签re_comment=pile('<!--[^>]*-->')#HTML注释s=re_cdata.sub('',htmlstr)#去掉CDATAs=re_script.sub('',s) #去掉SCRIPTs=re_style.sub('',s)#去掉styles=re_br.sub('n',s)#将br转换为换行s=re_h.sub('',s) #去掉HTML 标签s=re_comment.sub('',s)#去掉HTML注释#去掉多余的空行blank_line=pile('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=pile(r'&#?(?P<name>w+);')sz=re_charEntity.search(htmlstr)while sz:entity=sz.group()#entity全称,如>key=sz.group('name')#去除&;后entity,如>为gttry: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 htmlstrdef repalce(s,re_exp,repl_string):return re_exp.sub(repl_string,s)if __name__=='__main__':str='' # 需要提取的html字符串str=filter_tags(str)print(str)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。