📅  最后修改于: 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
函数可以将匹配到的标签替换为空字符串,从而达到剥离标签的效果。
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是一个高度封装的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编码的字符串即可。