Python正则获取、过滤或者替换HTML标签的方法
admin
2023-07-31 02:32:20
0

本文实例介绍了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.....)
这篇文章里面还提到了界定( 问号开头,前向则有个\'<\'号,非则有个\'!\' 号 ):
前向界定 (?<=…)
后向界定 (?=…) 
前向非界定 (?

Python通过正则表达式获取,去除(过滤)或者替换HTML标签代码举例

1、Python通过正则表达式取html中天气信息代码示例:

#!/usr/bin/env python 
#-*- coding: utf8 -*- 
import re 
  
html = \"\"\" 
  

多云

\"\"\" if __name__ == \'__main__\': p = re.compile(\'<[^>]+>\') print p.sub(\"\", html) Python通过正则表达式取html中温度信息代码示例: #!/usr/bin/env python #-*- coding: utf8 -*- import re html = \"\"\"
14℃
\"\"\" 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(\'//]*//\\]\\]>\',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(\'\')#处理换行
  re_h=re.compile(\']*>\')#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\\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

以上就是本文的全部内容,希望对大家的学习有所帮助。

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...