首页 >后端开发 >Python教程 >如何在 Python 中高效地从 HTML 中提取干净的文本?

如何在 Python 中高效地从 HTML 中提取干净的文本?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-29 22:58:11640浏览

How Can I Efficiently Extract Clean Text from HTML in Python?

使用 Python 从 HTML 中提取文本

您的目标是使用 Python 从 HTML 文件中提取文本,复制您获得的输出通过从浏览器复制文本并将其粘贴到文本中

挑战

正则表达式对于格式不良的 HTML 来说不够强大。虽然 Beautiful Soup 经常被推荐,但它可能会拾取 JavaScript 等不需要的内容,并且无法解释 HTML 实体。

有希望的替代方案:html2text

尽管它生成 markdown 而不是纯文本,html2text 可以正确处理 HTML 实体并忽略 JavaScript。然而,它的文档和示例是有限的。

文本提取的最佳代码

下面的代码提供了一个有效的解决方案,可以过滤掉不需要的元素并保留 HTML 实体:

from urllib.request import urlopen
from bs4 import BeautifulSoup

url = "http://news.bbc.co.uk/2/hi/health/2284783.stm"
html = urlopen(url).read()
soup = BeautifulSoup(html, features="html.parser")

# Remove scripts and styles
for script in soup(["script", "style"]):
    script.extract()

# Extract text
text = soup.get_text()

# Convert line breaks and remove whitespace
lines = (line.strip() for line in text.splitlines())
chunks = (phrase.strip() for line in lines for phrase in line.split("  "))
text = '\n'.join(chunk for chunk in chunks if chunk)

print(text)

依赖

使用这个代码,您需要安装 BeautifulSoup4:

pip install beautifulsoup4

以上是如何在 Python 中高效地从 HTML 中提取干净的文本?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn