首页 > 解决方案 > 如何将 HTML 转换为可读文本 - Python

问题描述

如何将此文本转换为可读(删除所有 </mtext>,即我已经尝试使用 html2text,但它只删除了 <p>,我需要删除所有内容。

我希望它像https://templates.mailchimp.com/resources/html-to-text/ 不像https://www.textfixer.com/html/html-to-text.php <p>Du kan g\u00f8re det s\u00e5dan her:<\/p><p><math><mrow><munder><mrow><munder><mrow><mtable><mtr><mtd><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mover><mrow><mtext> <\/mtext><mn>4297<\/mn><\/mrow><mrow><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mn>1<\/mn><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mn>1<\/mn><mo>\u2062<\/mo><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><\/mrow><\/mover><\/mtd><\/mtr><mtr><mtd><munder><mrow><mtable><mtr><mtd><mo>+<\/mo><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mn>1425<\/mn><\/mtd><\/mtr><\/mtable><\/mrow><mo>\u0332<\/mo><\/munder><\/mtd><\/mtr><mtr><mtd><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mn>5722<\/mn><\/mtd><\/mtr><\/mtable><\/mrow><mo>\u0332<\/mo><\/munder><\/mrow><mo>\u0332<\/mo><\/munder><\/mrow><\/math><\/p>

标签: pythonhtmltext

解决方案


您可以使用 BeautifulSoup 做到这一点。

from bs4 import BeautifulSoup

html = "<p>Du kan g\u00f8re det s\u00e5dan her:<\/p><p><math><mrow><munder><mrow><munder><mrow><mtable><mtr><mtd><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mover><mrow><mtext> <\/mtext><mn>4297<\/mn><\/mrow><mrow><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mn>1<\/mn><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mn>1<\/mn><mo>\u2062<\/mo><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><\/mrow><\/mover><\/mtd><\/mtr><mtr><mtd><munder><mrow><mtable><mtr><mtd><mo>+<\/mo><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mn>1425<\/mn><\/mtd><\/mtr><\/mtable><\/mrow><mo>\u0332<\/mo><\/munder><\/mtd><\/mtr><mtr><mtd><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mtext> <\/mtext><mn>5722<\/mn><\/mtd><\/mtr><\/mtable><\/mrow><mo>\u0332<\/mo><\/munder><\/mrow><mo>\u0332<\/mo><\/munder><\/mrow><\/math><\/p>"
soup = BeautifulSoup(html)

# remove the script and style elements
for script in soup(["script", "style"]):
    script.extract()
    
# extract the text
text = soup.get_text()

print(text)

推荐阅读