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使用threading获取线程函数返回值的实现方法
Nov 15 Python
Python实现的朴素贝叶斯分类器示例
Jan 06 Python
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
python 实现一次性在文件中写入多行的方法
Jan 28 Python
10 分钟快速入门 Python3的教程
Jan 29 Python
Python3.5内置模块之time与datetime模块用法实例分析
Apr 27 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 Python
python使用pandas抽样训练数据中某个类别实例
Feb 28 Python
Python插件机制实现详解
May 04 Python
Python叠加矩形框图层2种方法及效果
Jun 18 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
Sep 05 Python
python opencv实现图像配准与比较
Feb 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
php执行sql语句的写法
2009/03/10 PHP
php通过文件流方式复制文件的方法
2015/03/13 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
HTML上传控件取消选择
2013/03/06 Javascript
javascript获取网页宽高方法汇总
2015/07/19 Javascript
使用javaScript动态加载Js文件和Css文件
2015/10/24 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
Node.js中文件操作模块File System的详细介绍
2017/01/05 Javascript
原生node.js案例--前后台交互
2017/02/20 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
你了解vue3.0响应式数据怎么实现吗
2019/06/07 Javascript
vue给对象动态添加属性和值的实例
2019/09/09 Javascript
解决Vue router-link绑定事件不生效的问题
2020/07/22 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
理解Python中函数的参数
2015/04/27 Python
Python第三方库的安装方法总结
2016/06/06 Python
Windows下安装Django框架的方法简明教程
2018/03/28 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
Python异常的检测和处理方法
2018/10/26 Python
在Python中实现shuffle给列表洗牌
2018/11/08 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
python实现七段数码管和倒计时效果
2019/11/23 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
2020/02/06 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
英国女性时尚品牌:Apricot
2018/12/04 全球购物
编程实现去掉XML的重复结点
2014/05/28 面试题
岗位职责怎么写
2014/03/14 职场文书
小学教师师德承诺书
2014/05/23 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
反腐倡廉剖析材料
2014/09/30 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
语文教师个人工作总结
2015/02/06 职场文书