经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 其他 » 正则表达式 » 查看文章
Python使用正则表达式去除(过滤)HTML标签提取文字功能
来源:jb51  时间:2019/7/16 8:36:23  对本文有异议

正则表达式是一个特殊的字符序列,可以帮助您使用模式中保留的专门语法来匹配或查找其他字符串或字符串集。 正则表达式在UNIX世界中被广泛使用。

下面给大家介绍下Python使用正则表达式去除(过滤)HTML标签提取文字,具体代码如下所示:

  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*scripts*>',re.I)#Script
  10. re_style=re.compile('<s*style[^>]*>[^<]*<s*/s*styles*>',re.I)#style
  11. re_br=re.compile('<brs*?/?>')#处理换行
  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('',s) #去掉SCRIPT
  16. s=re_style.sub('',s)#去掉style
  17. s=re_br.sub('n',s)#将br转换为换行
  18. s=re_h.sub('',s) #去掉HTML 标签
  19. s=re_comment.sub('',s)#去掉HTML注释
  20. #去掉多余的空行
  21. blank_line=re.compile('n+')
  22. s=blank_line.sub('n',s)
  23. s=replaceCharEntity(s)#替换实体
  24. return s
  25. ##替换常用HTML字符实体.
  26. #使用正常的字符替换HTML中特殊的字符实体.
  27. #你可以添加新的实体字符到CHAR_ENTITIES中,处理更多HTML字符实体.
  28. #@param htmlstr HTML字符串.
  29. def replaceCharEntity(htmlstr):
  30. CHAR_ENTITIES={'nbsp':' ','160':' ',
  31. 'lt':'<','60':'<',
  32. 'gt':'>','62':'>',
  33. 'amp':'&','38':'&',
  34. 'quot':'"','34':'"',}
  35. re_charEntity=re.compile(r'&#?(?P<name>w+);')
  36. sz=re_charEntity.search(htmlstr)
  37. while sz:
  38. entity=sz.group()#entity全称,如>
  39. key=sz.group('name')#去除&;后entity,如>为gt
  40. try:
  41. htmlstr=re_charEntity.sub(CHAR_ENTITIES[key],htmlstr,1)
  42. sz=re_charEntity.search(htmlstr)
  43. except KeyError:
  44. #以空串代替
  45. htmlstr=re_charEntity.sub('',htmlstr,1)
  46. sz=re_charEntity.search(htmlstr)
  47. return htmlstr
  48. def repalce(s,re_exp,repl_string):
  49. return re_exp.sub(repl_string,s)
  50. if __name__=='__main__':
  51. str='' # 需要提取的html字符串
  52. str=filter_tags(str)
  53. print(str)

总结

以上所述是小编给大家介绍的Python使用正则表达式去除(过滤)HTML标签提取文字功能 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对w3xue网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号