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实现ping的方法
Jul 06 Python
解析Python中的__getitem__专有方法
Jun 27 Python
Python常用算法学习基础教程
Apr 13 Python
获取python文件扩展名和文件名方法
Feb 02 Python
PyTorch上实现卷积神经网络CNN的方法
Apr 28 Python
Django  ORM 练习题及答案
Jul 19 Python
python网络爬虫 CrawlSpider使用详解
Sep 27 Python
Python如何操作office实现自动化及win32com.client的运用
Apr 01 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
Sep 01 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
Sep 03 Python
利用python Pandas实现批量拆分Excel与合并Excel
May 23 Python
pytorch 实现在测试的时候启用dropout
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
PHP实现检测客户端是否使用代理服务器及其匿名级别
2015/01/07 PHP
php实现读取内存顺序号
2015/03/29 PHP
PHP对称加密函数实现数据的加密解密
2016/10/27 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
2019/01/23 PHP
php DES加密算法实例分析
2019/09/18 PHP
Aster vs Newbee BO3 第三场2.18
2021/03/10 DOTA
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
原生JS实现-星级评分系统的简单实例
2016/08/21 Javascript
AngularJS表单验证中级篇(3)
2016/09/28 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
2017/03/29 Javascript
javascript实现电脑和手机版样式切换
2017/11/10 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
python批量下载图片的三种方法
2013/04/22 Python
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
Python实现堆排序的方法详解
2016/05/03 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
Python网络爬虫中的同步与异步示例详解
2018/02/03 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
Python中is和==的区别详解
2018/11/15 Python
Python发送邮件功能示例【使用QQ邮箱】
2018/12/04 Python
初探利用Python进行图文识别(OCR)
2019/02/26 Python
如何验证python安装成功
2020/07/06 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
经济管理专业毕业生自荐信范文
2014/01/02 职场文书
天鹅的故事教学反思
2014/02/04 职场文书
工程师岗位职责规定
2014/02/26 职场文书
主持词开场白
2014/03/17 职场文书
行政专员岗位职责说明书
2014/07/30 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
拙作再改《我的收音机情缘》
2022/04/05 无线电
vue判断按钮是否可以点击
2022/04/09 Vue.js