利用正则式处理,不知道会不会有性能问题,没有经过太多测试。
目前我有很多还是使用BeautifulSoup进行这种处理。
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*script\s*>',re.I)#Script
10     re_style=re.compile('<\s*style[^>]*>[^<]*<\s*/\s*style\s*>',re.I)#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('',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
26 ##替换常用HTML字符实体.
27 #使用正常的字符替换HTML中特殊的字符实体.
28 #你可以添加新的实体字符到CHAR_ENTITIES中,处理更多HTML字符实体.
29 #@param htmlstr HTML字符串.
30 def replaceCharEntity(htmlstr):
31     CHAR_ENTITIES={'nbsp':' ','160':' ',
32 'lt':'<','60':'<',
33 'gt':'>','62':'>',
34 'amp':'&','38':'&',
35 'quot':'"','34':'"',}
36
37     re_charEntity=re.compile(r'&#?(?P<name>\w+);')
38     sz=re_charEntity.search(htmlstr)
39 while sz:
40         entity=sz.group()#entity全称,如&gt;
41         key=sz.group('name')#去除&;后entity,如&gt;为gt
42 try:
43             htmlstr=re_charEntity.sub(CHAR_ENTITIES[key],htmlstr,1)
44             sz=re_charEntity.search(htmlstr)
45 except KeyError:
46 #以空串代替
47             htmlstr=re_charEntity.sub('',htmlstr,1)
48             sz=re_charEntity.search(htmlstr)
49 return htmlstr
50
51 def repalce(s,re_exp,repl_string):
52 return re_exp.sub(repl_string,s)
53
54 if __name__=='__main__':
55     s=file('Google.htm').read()
56     news=filter_tags(s)
57 print news

输出结果:

Google网页 图片 地图 资讯 视频 财经 更多 博客 生活 热榜 网站导航 日历 照片 文档 协作平台 输入法 工具栏 软件精选 更多 个性化首页 | 登录

高级搜索

使用偏好

语言工具所有网页 中文网页 简体中文网页 中国的网页

广告计划 – Google 大全 – Google.com in English2009 – 隐私权 – ICP证合字B2-20070004号

转载于:https://www.cnblogs.com/mmix2009/p/3220990.html

Python:使用正则去除HTML标签(转)相关推荐

  1. 去除a链接+java正则_JavaScript实现正则去除a标签并保留内容的方法【测试可用】...

    本文实例讲述了JavaScript实现正则去除a标签并保留内容的方法.分享给大家供大家参考,具体如下: 一.问题: 有如下HTML代码,要求用正则去除a标签,只留下内容 //www.jb51.net ...

  2. python3 正则 去除 html标签、提取正文内容_Python通过正则表达式去除(过滤)HTML标签,提取文字...

    # -*- coding: utf-8-*- import re ##过滤HTML中的标签 #将HTML中标签等信息去掉 #@param htmlstr HTML字符串. def filter_tag ...

  3. 正则去除HTML标签

    正则匹配html标签简单的思路就是:匹配所有<>里的不是>的字符.这样就能保证匹配到的那些<...>里面不会再有尖括号. 描述有点绕,看下代码: var reg = /& ...

  4. python爬虫正则匹配td标签中的内容,以及一些常用的正则

    '<td class="dd"><a href="#">Test</a></td>' 格式如上 正则如下: td ...

  5. php 正则替换style,php正则去除js,class,id,style标签代码

    在写xml的时候,文档要求内容里面只要图片和段落就可以了,其他的css,js什么的都不需要. 所以,在输出的时候,就要用正则去过滤掉不需要的标签代码. 第一种:php正则去除js标签代码.$preg  ...

  6. python正则匹配html标签_Python正则获取、过滤或者替换HTML标签的方法

    本文实例介绍了Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法,具体内容如下 python正则表达式关键内容: python正则表达式转义符: . 匹配除换行符以外的任意字符 ...

  7. Python正则去除中英文标点的操作手法

    我们在用Python制作一些SEO小工具的时候总是会和文章打交道,大家知道通过Python直接采集,或者通过火车头采集文章的时候,为了保全文章的主题内容可以完全的采集到,文章的内容里面都是有很多的标点 ...

  8. php 去除标签内样式,PHP去除html标签,php标记及css样式代码参考

    语法: string strip_tags(string str); 传回值: 字串 函式种类: 资料处理 解析:本函式可去掉字串中包含的任何 HTML 及 PHP 的标记字串.若是字串的 HTML ...

  9. php去除html标签 空白,php使用strip_tags()去除html标签仍有空白的解决方法

    在项目的时候经常遇到html去除之后仍然有空白,吾爱编程接下来通过以下实例讲述了php使用strip_tags()去除html标签仍有空白的解决方法.具体如下: $subject = strip_ta ...

  10. php去除img,PHP如何去除IMG标签?_后端开发

    go语言中一些字符串操作介绍_后端开发 Go语言中字符串的字节使用UTF-8编码表示Unicode文本,因此Go语言字符串是变宽字符序列,本文就来为大家介绍一些go语言中字符串的操作. PHP如何去除 ...

最新文章

  1. 达摩院基于元学习的对话系统
  2. CTFshow php特性 web132
  3. 第七周实践项目4 队列数组
  4. 服务器监控报警系统软件设计,船舶机舱监控报警系统软件设计与实现
  5. linux 打开端口1935,CentOS服务器开放端口
  6. scrapy-redis
  7. 怎么用matlab处理数据,如何用Matlab处理.wfm格式的数据
  8. 网址被微信拦截怎么办 微信屏蔽的域名如何正常访问
  9. 与IO相关的等待事件troubleshooting-系列9
  10. SAP CRM One Order CLOSING date change debug
  11. 社交网络图中结点的“重要性“计算(Dijkstra + SPFA + Floyd + 模板)
  12. 组策略 之 恢复默认组策略对象命令
  13. weblogic登录验证被拒绝_腾讯游戏:疑似未成年人登录和支付时需人脸识别验证...
  14. mysql中使用触发器实例
  15. awk中RS,ORS,FS,OFS区别与联系
  16. Android音乐播放模式切换-外放、听筒、耳机
  17. 什么是jQuery,jQuery选择器
  18. chinapay java_ECSHOP 银联电子支付(ChinaPay)插件 掉用JAVA签名
  19. Catalina 10.15.7屏蔽更新提示
  20. Oracle数据库基本常用命令

热门文章

  1. VScode找不到C++万能头文件<bits/stdc++.h>解决办法
  2. 代理模式的原理解析入门
  3. matlib实现梯度下降法
  4. 云服务器真假辨别奥秘
  5. UVa 10791 Minimum Sum LCM
  6. Extjs layout 总结
  7. 接口(Interface)的作用
  8. 永远不要因为这个工作不好而辞职、、、、
  9. PHP设计模式——建造者模式
  10. 设计模式-策略模式和模板方法模式