使用python语言进行html到文本转换

时间:2010-08-19 13:00:36

标签: python

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

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

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

2 个答案:

答案 0 :(得分:6)

您需要使用urllib2 python library从网站获取html,然后通过html解析以获取所需的文本。

使用BeautifulSoup解析html

import BeautifulSoup
resp = urllib2.urlopen("http://stackoverflow.com")
rawhtml = resp.read()
#parse through html to get text
soup=BeautifulSoup(rawhtml)

答案 1 :(得分:1)

我不是“从浏览器中复制粘贴”是一个定义明确的操作。例如,如果整个页面都覆盖了透明浮动div,会发生什么?如果它有桌子怎么办?动态内容怎么样?

BeautifulSoup是一个功能强大的解析器;你只需要知道如何使用它(例如,从页面中删除script标签很容易)。幸运的是,它有很多documentation

您可以使用xml.sax.utils.unescape取消HTML实体。