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调用新浪微博API项目实践
Jul 28 Python
在Django框架中编写Contact表单的教程
Jul 17 Python
Python爬虫模拟登录带验证码网站
Jan 22 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
Jun 05 Python
利用Python正则表达式过滤敏感词的方法
Jan 21 Python
Pycharm+Python+PyQt5使用详解
Sep 25 Python
Python统计学一数据的概括性度量详解
Mar 03 Python
全网首秀之Pycharm十大实用技巧(推荐)
Apr 27 Python
python函数调用,循环,列表复制实例
May 03 Python
pygame用blit()实现动画效果的示例代码
May 28 Python
Python通过fnmatch模块实现文件名匹配
Sep 30 Python
python爬取代理IP并进行有效的IP测试实现
Oct 09 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
通过JavaScript使Div居中并随网页大小改变而改变
2013/06/24 Javascript
jquery ajax post提交数据乱码
2013/11/05 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
2015/06/23 Javascript
javascript 中的 delete及delete运算符
2015/11/15 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
Javascript之Date对象详解
2016/06/07 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
详解webpack babel的配置
2018/01/09 Javascript
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
js+cavans实现图片滑块验证
2020/09/29 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
带你了解python装饰器
2017/06/15 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2020/03/12 Python
浅谈python量化 双均线策略(金叉死叉)
2020/06/03 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
Python利用myqr库创建自己的二维码
2020/11/24 Python
地球上最先进的胡子和头发修剪器:Bevel
2018/01/23 全球购物
英国女装网上商店:I Saw It First
2018/10/18 全球购物
Python面试题集
2012/03/08 面试题
副总经理工作职责
2013/11/28 职场文书
见习期自我鉴定
2014/01/31 职场文书
岗位职责风险点
2014/03/12 职场文书
学习雷锋精神演讲稿
2014/05/10 职场文书
环保建议书200字
2014/05/14 职场文书
高中军训的心得体会
2014/09/01 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
国际贸易本科毕业生求职信
2014/09/26 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书
Spring实现内置监听器
2021/07/09 Java/Android