我想使用Python从HTML文件中提取文本。如果我从浏览器中复制文本并将其粘贴到记事本中,我想要的输出基本相同。
我想要比使用格式不正确的HTML可能失败的正则表达式更强大的东西。我见过很多人推荐Beautiful Soup,但是我使用它时遇到了一些问题。首先,它选择了不需要的文本,例如JavaScript源代码。此外,它没有解释HTML实体。例如,我希望HTML源代码中的'
能够在文本中转换为撇号,就像我将浏览器内容粘贴到记事本中一样。
更新:html2text
看起来很有希望。它正确处理HTML实体并忽略JavaScript。但是,它并不完全产生纯文本;它会产生降价,然后必须将其转换为纯文本。它没有示例或文档,但代码看起来很干净。
答案 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实体。