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完全新手教程
Feb 08 Python
详解Python网络爬虫功能的基本写法
Jan 28 Python
常用python编程模板汇总
Feb 12 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
Jul 04 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
Jan 04 Python
python指定写入文件时的编码格式方法
Jun 07 Python
python通过txt文件批量安装依赖包的实现步骤
Aug 13 Python
Python统计分析模块statistics用法示例
Sep 06 Python
python multiprocessing多进程变量共享与加锁的实现
Oct 02 Python
基于Python pyecharts实现多种图例代码解析
Aug 10 Python
浅析PyCharm 的初始设置(知道)
Oct 12 Python
使用python+pygame开发消消乐游戏附完整源码
Jun 10 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 rsa加密解密使用方法
2015/04/27 PHP
PHP实现的进度条效果详解
2016/05/03 PHP
PHP基于phpqrcode类生成二维码的方法详解
2018/03/14 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
ext form 表单提交数据的方法小结
2008/08/08 Javascript
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
按Enter键触发事件的jquery方法实现代码
2014/02/17 Javascript
js控制当再次点击按钮时的间隔时间
2014/06/03 Javascript
js使用递归解析xml
2014/12/12 Javascript
jQuery实现淡入淡出二级下拉导航菜单的方法
2015/08/28 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
详解JS: reduce方法实现 webpack多文件入口
2017/02/14 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
微信小程序简单实现form表单获取输入数据功能示例
2017/11/30 Javascript
详解webpack-dev-server使用http-proxy解决跨域问题
2018/01/13 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
2019/08/27 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
详解vue3.0 的 Composition API 的一种使用方法
2020/10/26 Javascript
Python 的类、继承和多态详解
2017/07/16 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
StubHub西班牙:购买和出售全球活动门票
2017/06/05 全球购物
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
大学自我鉴定
2013/12/20 职场文书
社区巾帼文明岗事迹材料
2014/06/03 职场文书
体育运动口号
2014/06/09 职场文书
创先争优公开承诺书
2014/08/30 职场文书
银行自荐信怎么写
2015/03/05 职场文书
团员自我评价范文
2015/03/10 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书
爱鸟护鸟的宣传语
2015/07/13 职场文书
MySQL插入数据与查询数据
2022/03/25 MySQL