Python正则获取、过滤或者替换HTML标签的方法


Posted in Python onJanuary 28, 2016

本文实例介绍了Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法,具体内容如下

python正则表达式关键内容:

python正则表达式转义符:

. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符

常用的python正则表达式限定符代码/语法说明:

*重复零次或更多次
+重复一次或更多次
?重复零次或一次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

关于python正则表达式命名组:

命名组:(?P<name>.....)
这篇文章里面还提到了界定( 问号开头,前向则有个'<'号,非则有个'!' 号 ):
前向界定 (?<=…)
后向界定 (?=…) 
前向非界定 (?<!....)
后向非界定 (?!.....)

Python通过正则表达式获取,去除(过滤)或者替换HTML标签代码举例

1、Python通过正则表达式取html中天气信息代码示例:

#!/usr/bin/env python 
#-*- coding: utf8 -*- 
import re 
  
html = """ 
  <h2>多云</h2> 
""" 
  
if __name__ == '__main__': 
  p = re.compile('<[^>]+>') 
  print p.sub("", html)
Python通过正则表达式取html中温度信息代码示例:
#!/usr/bin/env python 
#-*- coding: utf8 -*- 
import re 
  
html = """ 
  <div class="w-number"> <span class="tpte">14℃</span> </div> 
""" 
  
if __name__ == '__main__': 
  p = re.compile('<[^>]+>') 
  print p.sub("", html)

2、Python通过正则表达式去除(过滤)HTML标签示例代码:

# -*- coding: utf-8-*-
import re
##过滤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注释
  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注释
  #去掉多余的空行
  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
def repalce(s,re_exp,repl_string):
  return re_exp.sub(repl_string,s)
if __name__=='__main__':
  s=file('169it.com_index.htm').read()
  news=filter_tags(s)
  print news

以上就是本文的全部内容,希望对大家的学习有所帮助。

Python 相关文章推荐
Python使用urllib2获取网络资源实例讲解
Dec 02 Python
django admin 后台实现三级联动的示例代码
Jun 22 Python
python库lxml在linux和WIN系统下的安装
Jun 24 Python
pandas把所有大于0的数设置为1的方法
Jan 26 Python
python使用pipeline批量读写redis的方法
Feb 18 Python
python 求一个列表中所有元素的乘积实例
Jun 11 Python
python实现在一个画布上画多个子图
Jan 19 Python
Python对象的属性访问过程详解
Mar 05 Python
利用python绘制中国地图(含省界、河流等)
Sep 21 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
Oct 30 Python
python基于selenium爬取斗鱼弹幕
Feb 20 Python
Pytorch中Softmax和LogSoftmax的使用详解
Jun 05 Python
Python每天必学之bytes字节
Jan 28 #Python
Python装饰器入门学习教程(九步学习)
Jan 28 #Python
基于Python如何使用AIML搭建聊天机器人
Jan 27 #Python
使用Python写个小监控
Jan 27 #Python
基于Python实现通过微信搜索功能查看谁把你删除了
Jan 27 #Python
Python图像灰度变换及图像数组操作
Jan 27 #Python
让python在hadoop上跑起来
Jan 27 #Python
You might like
php file_get_contents函数轻松采集html数据
2010/04/22 PHP
php流量统计功能的实现代码
2012/09/29 PHP
PHP基础知识介绍
2013/09/17 PHP
php面向对象之反射功能与用法分析
2017/03/29 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
PHP常用字符串函数小结(推荐)
2018/08/05 PHP
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
JSON 教程 json入门学习笔记
2020/09/22 Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
2010/12/11 Javascript
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
2013/01/24 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
关闭时刷新父窗口两种方法
2014/05/07 Javascript
使用jQuery实现更改默认alert框体
2015/04/13 Javascript
javascript点击按钮实现隐藏显示切换效果
2016/02/03 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
详解Vue单元测试Karma+Mocha学习笔记
2018/01/31 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
js实现简单放大镜效果
2020/03/07 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
python编程开发之日期操作实例分析
2015/11/13 Python
Python线程同步的实现代码
2018/10/03 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
目前不被任何主流浏览器支持的CSS3属性汇总
2014/07/21 HTML / CSS
html5 标签
2009/07/16 HTML / CSS
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
仓库保管员岗位职责
2015/02/09 职场文书
2016元旦主持人开场白
2015/12/03 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
php实现自动生成验证码的实例讲解
2021/11/17 PHP