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 分析Nginx访问日志并保存到MySQL数据库实例
Mar 13 Python
Python实现的一个简单LRU cache
Sep 26 Python
关于python2 csv写入空白行的问题
Jun 22 Python
Python subprocess库的使用详解
Oct 26 Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 Python
Python操作redis实例小结【String、Hash、List、Set等】
May 16 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
Jul 25 Python
django基础学习之send_mail功能
Aug 07 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
Feb 25 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
Apr 28 Python
新手常见Python错误及异常解决处理方案
Jun 18 Python
python+pytest接口自动化之token关联登录的实现
Apr 06 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 class中public,private,protected的区别以及实例分析
2013/06/18 PHP
Zend Guard使用指南及问题处理
2015/01/07 PHP
php微信支付之公众号支付功能
2018/05/30 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
JavaScript的变量作用域深入理解
2009/10/25 Javascript
JavaScript面向对象之Prototypes和继承
2012/07/12 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
javascript实现多栏闭合展开式广告位菜单效果实例
2015/08/05 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
ECHO.js 纯javascript轻量级延迟加载的实例代码
2016/05/24 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
React中jquery引用的实现方法
2017/09/12 jQuery
微信公众号开发之微信支付代码记录的实现
2019/10/16 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
Python实现备份文件实例
2014/09/16 Python
Python实现二维有序数组查找的方法
2016/04/27 Python
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
python Elasticsearch索引建立和数据的上传详解
2019/08/04 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
办护照工作证明范本
2014/01/14 职场文书
2014国庆节主题活动方案:快乐的国庆节
2014/09/16 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
高三复习计划
2015/01/19 职场文书
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技