📜  剥离文本中的标签 (1)

📅  最后修改于: 2023-12-03 15:07:17.482000             🧑  作者: Mango

剥离文本中的标签

在网页开发中,经常会需要从HTML文本中剥离出标签,只留下纯文本内容。本文介绍几种方法来完成这个任务。

方法一:使用正则表达式

正则表达式是一种强大的文本匹配工具,在这里也可以派上用场。下面是一个简单的示例代码:

import re

# 定义一个HTML文本
html_text = "<h1>这是一个标题</h1><p>这是一段文字</p>"

# 使用正则表达式剥离标签
text = re.sub("<.*?>", "", html_text)

print(text)

输出结果为:

这是一个标题这是一段文字

解析:

正则表达式<.*?>可以匹配任意一个HTML标签,其中:

  • <>是标签的左右定界符;
  • .*?表示匹配任意个任意字符,但是尽可能少地匹配,遇到右定界符>就停止。

调用re.sub函数可以将匹配到的标签替换为空字符串,从而达到剥离标签的效果。

方法二:使用 BeautifulSoup

Beautiful Soup是一个Python库,可以从HTML或XML文件中提取数据。下面是一个简单的示例代码:

from bs4 import BeautifulSoup

# 定义一个HTML文本
html_text = "<h1>这是一个标题</h1><p>这是一段文字</p>"

# 使用 Beautiful Soup 对象剥离标签
soup = BeautifulSoup(html_text, "html.parser")
text = soup.get_text()

print(text)

输出结果为:

这是一个标题这是一段文字

解析:

首先将HTML文本传给BeautifulSoup对象,并指定解析器类型(这里是html.parser)。

然后获取对象的文本内容,调用方法soup.get_text()即可。此方法会将整个文档的所有标签都去掉,只剩下纯文本。

方法三:使用 lxml.etree

lxml是一个高度封装的Python库,可以提供高效的XML和HTML处理。下面是一个简单的示例代码:

from lxml import etree

# 定义一个HTML文本
html_text = "<h1>这是一个标题</h1><p>这是一段文字</p>"

# 使用 lxml.etree 对象剥离标签
html_tree = etree.HTML(html_text)
text = etree.tostring(html_tree, method="text", encoding="utf-8").decode("utf-8")

print(text)

输出结果为:

这是一个标题这是一段文字

解析:

将HTML文本传给etree.HTML函数生成一个lxml.etree对象。然后调用etree.tostring函数,传入上一步生成的对象,输出方法为"text",编码方式为"utf-8"。最后将结果解码为utf-8编码的字符串即可。