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 相关文章推荐
Django中模版的子目录与include标签的使用方法
Jul 16 Python
详解Python的Twisted框架中reactor事件管理器的用法
May 25 Python
Python机器学习logistic回归代码解析
Jan 17 Python
Python实现的质因式分解算法示例
May 03 Python
浅谈python中对于json写入txt文件的编码问题
Jun 07 Python
对numpy中shape的深入理解
Jun 15 Python
Python连接Mssql基础教程之Python库pymssql
Sep 16 Python
Django Sitemap 站点地图的实现方法
Apr 29 Python
Python解析命令行读取参数之argparse模块
Jul 26 Python
python的等深分箱实例
Nov 22 Python
Python基础之变量基本用法与进阶详解
Jan 03 Python
python dumps和loads区别详解
Feb 04 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文件夹的创建与删除方法
2015/01/24 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
PHP常用操作类之通信数据封装类的实现
2017/07/16 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
商城常用滚动的焦点图效果代码简单实用
2013/03/28 Javascript
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
浅谈Javascript 执行顺序
2013/12/18 Javascript
js实现的标题栏新消息闪烁提示效果
2014/06/06 Javascript
javascript文本框内输入文字倒计数的方法
2015/02/24 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
vue父组件向子组件(props)传递数据的方法
2018/01/02 Javascript
webpack实用小功能介绍
2018/01/02 Javascript
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
Python基于identicon库创建类似Github上用的头像功能
2017/09/25 Python
python中reduce()函数的使用方法示例
2017/09/29 Python
python实现分页效果
2017/10/25 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
2018/12/26 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
对python 自定义协议的方法详解
2019/02/13 Python
pandas计数 value_counts()的使用
2019/06/24 Python
Python安装及Pycharm安装使用教程图解
2019/09/20 Python
基于Python中的yield表达式介绍
2019/11/19 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
windows10在visual studio2019下配置使用openCV4.3.0
2020/07/14 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
C和C++经典笔试题附答案解析
2014/08/18 面试题
教师岗位职责
2013/11/17 职场文书
教师研修随笔感言
2014/01/23 职场文书
银行类自荐信
2014/02/04 职场文书
大学生社会实践评语
2014/04/25 职场文书
承诺书模板
2014/08/30 职场文书
酒会邀请函
2015/01/31 职场文书