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实现读取excel写入mysql的小工具详解
Nov 20 Python
Python中对象的引用与复制代码示例
Dec 04 Python
Python使用gRPC传输协议教程
Oct 16 Python
Django Rest framework之权限的实现示例
Dec 17 Python
Python Django 页面上展示固定的页码数实现代码
Aug 21 Python
Django框架 信号调度原理解析
Sep 04 Python
pytorch 求网络模型参数实例
Dec 30 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
Jun 12 Python
如何真正的了解python装饰器
Aug 14 Python
Python如何使用神经网络进行简单文本分类
Feb 25 Python
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
Apr 21 Python
python中pd.cut()与pd.qcut()的对比及示例
Jun 16 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
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
PHP define函数的使用说明
2008/08/27 PHP
简化php模板页面中分页代码的解析
2009/02/06 PHP
php防盗链的常用方法小结
2010/07/02 PHP
PHP中创建和验证哈希的简单方法实探
2015/07/06 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
JavaScript中利用各种循环进行遍历的方式总结
2015/11/10 Javascript
js使用cookie记录用户名的方法
2015/11/26 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
2016/09/21 Javascript
JavaScript实现Fly Bird小游戏
2016/12/15 Javascript
基于jQuery实现数字滚动效果
2017/01/16 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
详解为什么Vue中不要用index作为key(diff算法)
2020/04/04 Javascript
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
从多个tfrecord文件中无限读取文件的例子
2020/02/17 Python
keras中的卷积层&amp;池化层的用法
2020/05/22 Python
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
中学生励志演讲稿
2014/04/26 职场文书
绿色环保标语
2014/06/12 职场文书
党员干部反四风对照检查材料思想汇报
2014/09/14 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
导游词400字
2015/02/13 职场文书
学生会辞职信
2015/03/02 职场文书
胡桃夹子观后感
2015/06/11 职场文书
环保建议书范文
2015/09/14 职场文书
详解Django中 render() 函数的使用方法
2021/04/22 Python
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python