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模块处理url和图片的技巧两则
Feb 18 Python
深入浅析python定时杀进程
Jun 06 Python
python获取外网IP并发邮件的实现方法
Oct 01 Python
tensorflow建立一个简单的神经网络的方法
Feb 10 Python
用python统计代码行的示例(包括空行和注释)
Jul 24 Python
PyTorch搭建一维线性回归模型(二)
May 22 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
Jan 20 Python
python对XML文件的操作实现代码
Mar 27 Python
keras 读取多标签图像数据方式
Jun 12 Python
在终端启动Python时报错的解决方案
Nov 20 Python
python用分数表示矩阵的方法实例
Jan 11 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删除字符串最后一个字符的三种方法
2016/08/30 PHP
根据key删除数组中指定的元素实现方法
2017/03/02 PHP
Laravel框架文件上传功能实现方法示例
2019/04/16 PHP
js null undefined 空区别说明
2010/06/13 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
网页实时显示服务器时间和javscript自运行时钟
2014/06/09 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
JavaScript 继承详解(六)
2016/10/11 Javascript
jquery结合html实现中英文页面切换
2016/11/29 Javascript
JS正则表达式学习之贪婪和非贪婪模式实例总结
2016/12/26 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
基于jQuery实现可编辑的表格
2019/12/11 jQuery
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
javascript实现时间日期的格式化的方法汇总
2020/08/06 Javascript
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
python从网络读取图片并直接进行处理的方法
2015/05/22 Python
Python 逐行分割大txt文件的方法
2017/10/10 Python
python实现播放音频和录音功能示例代码
2018/12/30 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
给幼儿园老师的表扬信
2014/01/19 职场文书
水利水电专业自荐信
2014/07/08 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书