使用 Python 从 HTML 文件中提取文本

新手上路,请多包涵

我想使用 Python 从 HTML 文件中提取文本。如果我从浏览器复制文本并将其粘贴到记事本中,我希望得到的输出基本相同。

我想要比使用可能在格式不佳的 HTML 上失败的正则表达式更强大的东西。我见过很多人推荐 Beautiful Soup,但我在使用它时遇到了一些问题。一方面,它拾取了不需要的文本,例如 JavaScript 源代码。此外,它不解释 HTML 实体。例如,我希望 ‘在 HTML 源代码中转换为文本中的撇号,就像我将浏览器内容粘贴到记事本中一样。

更新 html2text 看起来很有希望。它正确处理 HTML 实体并忽略 JavaScript。但是,它并不完全生成纯文本。它会产生降价,然后必须将其转换为纯文本。它没有示例或文档,但代码看起来很干净。


相关问题:

原文由 John D. Cook 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

html2text 是一个 Python 程序,在这方面做得很好。

原文由 RexE 发布,翻译遵循 CC BY-SA 4.0 许可协议

我找到的最好的一段代码,用于在不获取 javascript 或不想要的东西的情况下提取文本:

 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")

# kill all script and style elements
for script in soup(["script", "style"]):
    script.extract()    # rip it out

# get text
text = soup.get_text()

# break into lines and remove leading and trailing space on each
lines = (line.strip() for line in text.splitlines())
# break multi-headlines into a line each
chunks = (phrase.strip() for line in lines for phrase in line.split("  "))
# drop blank lines
text = '\n'.join(chunk for chunk in chunks if chunk)

print(text)

你只需要安装 BeautifulSoup 之前:

 pip install beautifulsoup4

原文由 PeYoTlL 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题