什么是可以消除 HTML 标签的轻量级 Python 库?(并且只有文本)
如果你想消除 HTML 标签并提取纯文本,以下是一些轻量级的 Python 库,适合做这类操作:
html2text
html2text 是一个简单的库,可以将 HTML 转换为纯文本,并且格式化良好,适合将 HTML 转换为更具可读性的文本。
安装:
pip install html2text
使用示例:
import html2text html_content = "<p>This is a <b>test</b> paragraph.</p>" text_maker = html2text.HTML2Text() plain_text = text_maker.handle(html_content) print(plain_text)
输出:
This is a **test** paragraph.
BeautifulSoup
lxml
html.parser
BeautifulSoup 是一个非常强大的 HTML 解析库,你可以用它来去除 HTML 标签并提取纯文本。它支持各种 HTML 解析器,包括 html.parser 和 lxml。
pip install beautifulsoup4
from bs4 import BeautifulSoup html_content = "<p>This is a <b>test</b> paragraph.</p>" soup = BeautifulSoup(html_content, "html.parser") plain_text = soup.get_text() print(plain_text)
This is a test paragraph.
html
Python 标准库中有一个 html 模块,提供了 escape() 和 unescape() 方法,但它并不直接从 HTML 中提取文本。如果你已经有 HTML 实体编码(如 <, &),你可以使用 html 来解码它们。
escape()
unescape()
<
&
如果你仅仅是想提取文本并忽略标签,html 可能不如 BeautifulSoup 或 html2text 方便,但如果你的需求很简单,它也能做到。
import html html_content = "<p>This is a <b>test</b> paragraph.</p>" plain_text = html.unescape(html_content) print(plain_text)
<p>This is a <b>test</b> paragraph.</p>
然而,html.unescape() 并不会移除 HTML 标签,它只是解码 HTML 实体字符。如果需要去掉标签,BeautifulSoup 或 html2text 会更适合。
html.unescape()
lxml 是一个非常强大的库,能够高效地解析和处理 HTML/XML。它可以与 BeautifulSoup 一起使用,但 lxml 本身也可以非常高效地去除标签并提取文本。
pip install lxml
from lxml import html html_content = "<p>This is a <b>test</b> paragraph.</p>" tree = html.fromstring(html_content) plain_text = tree.text_content() print(plain_text)