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 相关文章推荐
netbeans7安装python插件的方法图解
Dec 24 Python
Python with的用法
Aug 22 Python
Python中MYSQLdb出现乱码的解决方法
Oct 11 Python
Python 获取当前所在目录的方法详解
Aug 02 Python
python去除字符串中的换行符
Oct 11 Python
用TensorFlow实现lasso回归和岭回归算法的示例
May 02 Python
Python实现多条件筛选目标数据功能【测试可用】
Jun 13 Python
python实现Zabbix-API监控
Sep 17 Python
聊聊python里如何用Borg pattern实现的单例模式
Jun 06 Python
Python3分析处理声音数据的例子
Aug 27 Python
django中间键重定向实例方法
Nov 10 Python
Python urlopen()参数代码示例解析
Dec 10 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学习之数据类型之间的转换介绍
2011/06/09 PHP
PHP中的traits简单使用实例
2015/05/13 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
PHP内核探索之变量
2015/12/22 PHP
zend框架实现支持sql server的操作方法
2016/12/08 PHP
IE与firefox下Dhtml的一些区别小结
2009/12/02 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
js时间戳格式化成日期格式的多种方法
2013/11/11 Javascript
js获取页面description的方法
2015/05/21 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
Javascript创建类和对象详解
2017/05/31 Javascript
深入理解vue中的$set
2017/06/01 Javascript
JS实现图片预览的两种方式
2017/06/27 Javascript
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
[54:53]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第二场
2014/05/23 DOTA
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
python 实现对数据集的归一化的方法(0-1之间)
2018/07/17 Python
详解python实现识别手写MNIST数字集的程序
2018/08/03 Python
Django model select的多种用法详解
2019/07/16 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
Python实现简单的2048小游戏
2021/03/01 Python
佐卡伊官网:中国知名珠宝品牌
2017/02/05 全球购物
全球销量第一生发产品:Viviscal
2017/12/21 全球购物
外企C语言笔试题
2013/11/10 面试题
软件工程师面试题
2012/06/25 面试题
毕业自我评价范文
2013/11/17 职场文书
平面设计专业大学生职业规划书
2014/03/12 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
居委会四风问题个人对照检查材料
2014/09/25 职场文书
五年级作文之成长
2019/09/16 职场文书
导游词之台湾阿里山
2019/10/23 职场文书
Apache Calcite 实现方言转换的代码
2021/04/24 Servers
vue ant design 封装弹窗表单的使用
2022/06/01 Vue.js