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.1版本带来的核心变化
Apr 07 Python
Python中遍历字典过程中更改元素导致异常的解决方法
May 12 Python
python实现基于SVM手写数字识别功能
May 27 Python
python抓取网站的图片并下载到本地的方法
May 22 Python
python 用所有标点符号分隔句子的示例
Jul 15 Python
Python列表list常用内建函数实例小结
Oct 22 Python
Pytorch 中retain_graph的用法详解
Jan 07 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
Mar 30 Python
Python使用monkey.patch_all()解决协程阻塞问题
Apr 15 Python
PyTorch 导数应用的使用教程
Aug 31 Python
Python数据分析库pandas高级接口dt的使用详解
Dec 11 Python
详解Django中的FBV和CBV对比分析
Mar 01 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中get_defined_constants函数用法实例分析
2015/05/12 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
javascript 程序库的比较(一)之DOM功能
2010/04/07 Javascript
json原理分析及实例介绍
2012/11/29 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
JavaScript中的关键字&quot;VAR&quot;使用详解 分享
2013/07/31 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
再JavaScript的jQuery库中编写动画效果的指南
2015/08/13 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
快速解决js开发下拉框中blur与click冲突
2016/10/10 Javascript
canvas绘制七巧板
2017/02/03 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
详解jQuery设置内容和属性
2019/04/11 jQuery
javascript面向对象程序设计实践常用知识点总结
2019/07/29 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
python调用shell的方法
2013/11/20 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
python Pexpect模块的使用
2020/12/25 Python
彪马美国官网:PUMA美国
2017/03/09 全球购物
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
农行实习自我鉴定
2013/09/22 职场文书
上级检查欢迎词
2014/01/18 职场文书
2014年机关植树节活动方案
2014/02/27 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
导游词之日月潭
2019/11/05 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS