【python系列】使用正则表达式去除HTML字符串

前端之家收集整理的这篇文章主要介绍了【python系列】使用正则表达式去除HTML字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. 关键代码见标红部分
  1. # -*- coding: utf-8-*-
  2. import re
  3. ##过滤HTML中的标签
  4. #将HTML中标签等信息去掉
  5. #@param htmlstr HTML字符串.
  6. def filter_tags(htmlstr):
  7. #先过滤CDATA
  8. re_cdata=re.compile('//<!\[CDATA\[[^>]*//\]\]>',re.I) #匹配CDATA
  9. re_script=re.compile('<\s*script[^>]*>[^<]*<\s*/\s*script\s*>',re.I)#Script
  10. re_style=re.compile('<\s*style[^>]*>[^<]*<\s*/\s*style\s*>',89)">#style
  11. re_br=re.compile('<br\s*?/?>')#处理换行
  12. re_h=re.compile('</?\w+[^>]*>')#HTML标签
  13. re_comment=re.compile('<!--[^>]*-->')#HTML注释
  14. s=re_cdata.sub('',htmlstr)#去掉CDATA
  15. s=re_script.sub(#去掉SCRIPT
  16. s=re_style.sub(#去掉style
  17. s=re_br.sub('\n',s)#将br转换为换行
  18. s=re_h.sub(#去掉HTML 标签
  19. s=re_comment.sub(#去掉HTML注释
  20. #去掉多余的空行
  21. blank_line=re.compile('\n+')
  22. s=blank_line.sub('\n',s)
  23. s=replaceCharEntity(s)#替换实体
  24. return s
  25.  
  26. ##替换常用HTML字符实体.
  27. #使用正常的字符替换HTML中特殊的字符实体.
  28. #你可以添加新的实体字符到CHAR_ENTITIES中,处理更多HTML字符实体.
  29. def replaceCharEntity(htmlstr):
  30. CHAR_ENTITIES={'nbsp':' ','160':'lt':'<',255)">'60':'gt':'>',255)">'62':'amp':'&',255)">'38':'quot':'"',255)">'34':r'&#?(?P<name>\w+);')
  31. sz=re_charEntity.search(htmlstr)
  32. while sz:
  33. entity=sz.group()#entity全称,如&gt;
  34. key=sz.group('name')#去除&;后entity,如&gt;为gt
  35. try:
  36. htmlstr=re_charEntity.sub(CHAR_ENTITIES[key],htmlstr,1)
  37. sz=re_charEntity.search(htmlstr)
  38. except KeyError:
  39. #以空串代替
  40. htmlstr=re_charEntity.sub(return htmlstr
  41.  
  42. def repalce(s,re_exp,repl_string):
  43. return re_exp.sub(repl_string,s)
  44.  
  45. if __name__=='__main__':
  46. s=file('Google.htm').read()
  47. news=filter_tags(s)
  48. print news

猜你在找的正则表达式相关文章