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模块restful使用方法实例
Dec 10 Python
videocapture库制作python视频高速传输程序
Dec 23 Python
python处理cookie详解
Feb 07 Python
python 字典(dict)按键和值排序
Jun 28 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
Mar 20 Python
python中利用Future对象回调别的函数示例代码
Sep 07 Python
Python处理命令行参数模块optpars用法实例分析
May 31 Python
Python Pandas 获取列匹配特定值的行的索引问题
Jul 01 Python
利用python开发app实战的方法
Jul 09 Python
PyQT5速成教程之Qt Designer介绍与入门
Nov 02 Python
解决Jupyter-notebook不弹出默认浏览器的问题
Mar 30 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
May 27 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
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
2007/03/15 PHP
php ImageMagick windows下安装教程
2015/01/26 PHP
详解PHP使用Redis存储session时的一个Warning定位
2017/07/05 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
PHP实现的多进程控制demo示例
2019/07/22 PHP
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
详解Jquery实现ready和bind事件
2016/04/14 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
IE下JS保存图片的简单实例
2016/07/15 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
原生js实现选项卡功能
2017/03/08 Javascript
字太多用...代替的方法(两种)
2017/03/15 Javascript
原生js实现抽奖小游戏
2019/06/27 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
Python 学习笔记
2008/12/27 Python
Python help()函数用法详解
2014/03/11 Python
Python中zfill()方法的使用教程
2015/05/20 Python
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
Python模拟用户登录验证
2017/09/11 Python
使用Python制作微信跳一跳辅助
2018/01/31 Python
Python实现Event回调机制的方法
2019/02/13 Python
详解CSS的border边框属性及其在CSS3中的新特性
2016/05/10 HTML / CSS
韩国现代百货官网:Hmall
2018/03/21 全球购物
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
迅雷Cued工作心得体会
2014/01/27 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
爱国口号
2014/06/19 职场文书
民主生活会对照检查材料
2014/09/22 职场文书
国际贸易实训总结
2015/08/03 职场文书
《秋思》教学反思
2016/02/23 职场文书
2019年汽车租赁合同范本!
2019/08/12 职场文书