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 相关文章推荐
在Python3中初学者应会的一些基本的提升效率的小技巧
Mar 31 Python
深入解读Python解析XML的几种方式
Feb 16 Python
Python简单读取json文件功能示例
Nov 30 Python
Python中eval带来的潜在风险代码分析
Dec 11 Python
简单了解什么是神经网络
Dec 23 Python
django自带的server 让外网主机访问方法
May 14 Python
python文件选择对话框的操作方法
Jun 27 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
基于TensorFlow的CNN实现Mnist手写数字识别
Jun 17 Python
浅析Python迭代器的高级用法
Jul 16 Python
Python爬虫之Selenium设置元素等待的方法
Dec 04 Python
Python实现学生管理系统并生成exe可执行文件详解流程
Jan 22 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
url decode problem 解决方法
2011/12/26 PHP
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
2013/06/28 PHP
浅析51个PHP处理字符串的函数
2013/08/02 PHP
PHP安全下载文件的方法
2016/04/07 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
基于php实现的验证码小程序
2016/12/13 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
jQuery中prepend()方法用法实例
2014/12/25 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
2016/11/18 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
2017/02/11 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
利用node.js本地搭建HTTP服务器
2017/04/19 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
详解React之key的使用和实践
2018/09/29 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
Python中的字符串查找操作方法总结
2016/06/27 Python
Python决策树之基于信息增益的特征选择示例
2018/06/25 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
Python中按键来获取指定的值
2019/03/02 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
OpenCV 模板匹配
2019/07/10 Python
flask实现验证码并验证功能
2019/12/05 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
好的自荐信的要求
2013/10/30 职场文书
公司股东合作协议书
2014/09/14 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
分析并发编程之LongAdder原理
2021/06/29 Java/Android
十大经典日本动漫排行榜 海贼王第三,犬夜叉仅第八
2022/03/18 日漫