【问题标题】:How to convert HTML to readable text - Python如何将 HTML 转换为可读文本 - Python
【发布时间】:2020-08-29 18:17:15
【问题描述】:

如何将此文本转换为可读(删除所有 即 我已经尝试过使用 html2text,但它只删除了

,我需要删除所有内容。'

我希望它像 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>

【问题讨论】:

标签: python html text


【解决方案1】:

您可以使用 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)

【讨论】:

  • 它最终给了我Du kan f.eks. g\u00f8re s\u00e5dan her:&lt;\p&gt; 它完全跳过了像这样的重要数字(粗体由于某种原因不起作用,所以在**和**之间,应该是粗体):@987654323 @ 那是我使用 soup.p.get_text().replace("\n", "") 的时候,因为我不想保留空格
  • 我当前的代码:soup = BeautifulSoup(questions[0]) for script in soup(["script", "style"]): script.decompose() ques = soup.p.get_text().replace("\n", "") questions[0] 正好等于你上面的字符串
  • 嗯,我不确定我是否理解。你想要的输出是什么?它给了我Du kan gøre det sådan her: 4297 1 1⁢ + 1425̲ 5722̲̲,这似乎保留了空间好吗?
【解决方案2】:

不知道这里有没有你想要的。

from simplified_scrapy import SimplifiedDoc,utils
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>
'''
doc = SimplifiedDoc(html)
print (doc.text)
print (doc.removeHtml(html))
print (doc.replaceReg(html,'<[^>]*>','').strip())
print (doc.replaceReg(doc.replaceReg(html,'<[^>]*>',''),'[ ]+',' ').strip()

【讨论】:

    猜你喜欢
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 2013-01-19
    • 2014-10-29
    • 2019-08-07
    相关资源
    最近更新 更多