Python正则获取、过滤或者替换HTML标签的方法
### Python正则获取、过滤或者替换HTML标签的方法 在日常工作中,我们经常需要从网页中提取数据,而这些数据往往包含大量的HTML标签。为了更好地处理这些数据,掌握如何使用Python正则表达式来获取、过滤或者替换HTML标签是至关重要的。 #### Python正则表达式基础 在深入学习如何使用正则表达式处理HTML标签之前,我们首先需要了解一些基本的正则表达式符号及其含义: - `.`:匹配除换行符以外的任意字符。 - `\w`:匹配字母或数字或下划线或汉字。 - `\s`:匹配任意的空白符。 - `\d`:匹配数字。 - `\b`:匹配单词的开始或结束。 - `^`:匹配字符串的开始。 - `$`:匹配字符串的结束。 - `\W`:匹配任意不是字母,数字,下划线,汉字的字符。 - `\S`:匹配任意不是空白符的字符。 - `\D`:匹配任意非数字的字符。 - `\B`:匹配不是单词开头或结束的位置。 - `[^x]`:匹配除了`x`以外的任意字符。 - `[^aeiou]`:匹配除了`aeiou`这几个字母以外的任意字符。 此外,还有一些常用的限定符: - `*`:重复零次或更多次。 - `+`:重复一次或更多次。 - `?`:重复零次或一次。 - `{n}`:重复`n`次。 - `{n,}`:重复`n`次或更多次。 - `{n,m}`:重复`n`到`m`次。 命名组也是正则表达式中一个非常有用的特性,它允许我们将匹配的部分命名为特定的组名,方便后续的引用。例如:`(?P<name>..)`。此外,界定(lookaround)也是一项非常实用的功能,它可以用来检查某个模式前后是否出现特定的模式,但不会实际匹配这些字符: - 前向界定(positive lookahead):`(?<=…)`。 - 后向界定(positive lookbehind):`(?=…)`。 - 前向非界定(negative lookahead):`(?<!.)`。 - 后向非界定(negative lookbehind):`(?!..)`。 #### Python正则表达式获取HTML标签 获取HTML标签通常涉及到对整个HTML文档的解析,并提取出我们需要的信息。下面是一些具体的例子: 1. **获取HTML中的天气信息**: ```python import re html = """ <h2>多云</h2> """ if __name__ == '__main__': p = re.compile('<[^>]+>') print(p.sub("", html)) ``` 2. **获取HTML中的温度信息**: ```python import re html = """ <div class="w-number"><span class="tpte">14℃</span></div> """ if __name__ == '__main__': p = re.compile('<[^>]+>') print(p.sub("", html)) ``` #### Python正则表达式过滤HTML标签 有时候,我们可能只需要文本内容,而不需要任何HTML标签。在这种情况下,我们可以使用正则表达式来去除HTML标签。 下面的函数`filter_tags`可以有效地去除HTML中的各种标签: ```python import re 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 ``` #### Python正则表达式替换HTML标签 除了获取和过滤HTML标签外,我们还可以使用正则表达式来替换某些HTML标签。例如,如果我们想要将所有的`<br>`标签替换为换行符`\n`,可以这样操作: ```python import re def replace_br_with_newline(htmlstr): pattern = re.compile('<br\s*?/?>') replaced_html = pattern.sub('\n', htmlstr) return replaced_html ``` 以上就是关于如何使用Python正则表达式来获取、过滤或者替换HTML标签的基本介绍。这些技巧对于Web开发、数据抓取等领域都非常有用。希望对你有所帮助!
























- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- PhotoshopCS(PS)基础知识教程.doc
- 2021-2022年收藏的精品资料经济社会运行监测预测与重要数据采集系统.doc
- 大数据:当下社会的流行词-未来发展的启明星(1).docx
- IBM小型机解决方案.doc
- selenium2-python自动化测试实战(1).ppt
- 计算机网络课程设计交换式和虚拟局域网.doc
- 《让剪艺变简易——中国剪纸电脑辅助设计软件》.pdf
- 第3章SQLServer2012概述教学文案.ppt
- (完整版)PMP考试常用公式汇总.doc
- 北师大网络教育作业网页制作与网站建设.doc
- GSM常用知识GSM网络优化与规划.doc
- 计算机应用技术与信息化或互联网相结合的案例.docx
- 人工智能时代财务会计向管理会计转型研究-1.docx
- 加强数字化学校建设提高教育信息化水平浅论昌邑市数字化学校建设与应用经验的论文-高等教育论文.docx
- 互联网+背景下创新型专业学位医学研究生培养模式的初探与实践.docx
- AutoCAD辅助设计ppt.ppt.ppt


