使用 Python 从 HTML 文件中提取干净的文本
当寻求使用 Python 从 HTML 文件中提取文本时,重要的是要考虑鲁棒性和准确性。虽然正则表达式通常可以完成这项工作,但它们可能会遇到格式不良的 HTML。
对于更强大的解决方案,通常建议使用 Beautiful Soup 等库。然而,用户可能会遇到不需要的文本的挑战,例如 JavaScript 源和不正确的 HTML 实体解释。
要解决这些问题,需要更全面的方法。
html2text:一个有前途的解决方案
一个有前途的解决方案是 html2text。该库正确处理 HTML 实体并忽略 JavaScript。然而,它生成 Markdown 而不是纯文本,需要额外的处理来转换它。
利用 BeautifulSoup 和自定义代码
另一种方法是将 BeautifulSoup 与自定义代码。通过删除不需要的元素(例如脚本和样式)并利用 get_text() 方法,您可以获得干净的文本表示形式,而无需仅依赖正则表达式。
以下是演示此方法的 Python 代码片段:
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 script and style elements for script in soup(["script", "style"]): script.extract() # Extract text text = soup.get_text() # Additional processing to remove unwanted whitespace and split headlines into separate lines 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)
这种方法允许您从 HTML 文件中提取干净的、人类可读的文本,而没有正则表达式或库可能无法处理所有场景的缺点有效。
以上是如何在 Python 中从 HTML 文件中提取干净的文本,同时避免正则表达式的陷阱?的详细内容。更多信息请关注PHP中文网其他相关文章!