python对html过滤处理的方法


Posted in Python onOctober 21, 2018

如下所示:

##过滤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*script\s*>',re.I)#Script
 re_style=re.compile('<\s*style[^>]*>[^<]*<\s*/\s*style\s*>',re.I)#style
 re_br=re.compile('<br\s*?/?>')#处理换行
 re_h=re.compile('</?\w+[^>]*>')#HTML标签
 re_comment=re.compile('<!--[^>]*-->')#HTML注释
 re_stopwords=re.compile('\u3000')#去除无用的'\u3000'字符
 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注释
 s=re_stopwords.sub('',s)
 #去掉多余的空行
 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

以上这篇python对html过滤处理的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
深入理解 Python 中的多线程 新手必看
Nov 20 Python
Python 多进程并发操作中进程池Pool的实例
Nov 01 Python
python 读取竖线分隔符的文本方法
Dec 20 Python
详解python的argpare和click模块小结
Mar 31 Python
Python GUI编程完整示例
Apr 04 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
Jun 24 Python
Python如何调用JS文件中的函数
Aug 16 Python
python数据化运营的重要意义
Nov 25 Python
tensorflow 环境变量设置方式
Feb 06 Python
python用pip install时安装失败的一系列问题及解决方法
Feb 24 Python
python 函数嵌套及多函数共同运行知识点讲解
Mar 03 Python
Python docutils文档编译过程方法解析
Jun 23 Python
一看就懂得Python的math模块
Oct 21 #Python
python中将正则过滤的内容输出写入到文件中的实例
Oct 21 #Python
Python用5行代码写一个自定义简单二维码
Oct 21 #Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
Oct 21 #Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
Oct 21 #Python
用Django写天气预报查询网站
Oct 21 #Python
Django中数据库的数据关系:一对一,一对多,多对多
Oct 21 #Python
You might like
php smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
2017/02/24 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
2019/04/12 PHP
用于节点操作的API,颠覆原生操作HTML DOM节点的API
2010/12/11 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
纯Javascript实现ping功能的方法
2015/03/20 Javascript
jQuery使用toggleClass方法动态添加删除Class样式的方法
2015/03/26 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
详解JavaScript中的forEach()方法的使用
2015/06/08 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
vue.js前后端数据交互之提交数据操作详解
2018/04/24 Javascript
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
2020/10/15 Python
用纯css3和html制作泡沫对话框实现代码
2013/03/21 HTML / CSS
全球性的在线商店:Vogca
2019/05/10 全球购物
公务员个人自我评价分享
2013/11/06 职场文书
最新的咖啡店创业计划书
2013/12/30 职场文书
写给爸爸的道歉信
2014/01/15 职场文书
如何写一份好的英文求职信
2014/03/19 职场文书
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
医院信息公开实施方案
2014/05/09 职场文书
机动车交通事故协议书
2015/01/29 职场文书
冰雪公主观后感
2015/06/16 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
Nginx的gzip相关介绍
2022/05/11 Servers