使用Python语言将HTML转换为文本
我想用Python从一个HTML文件中提取文本。我的目标是得到和从浏览器复制文本然后粘贴到记事本里一样的结果。
我希望用的方法比正则表达式更可靠,因为正则表达式在处理格式不太好的HTML时可能会出问题。我看到很多人推荐使用Beautiful Soup,但我在使用它时遇到了一些问题。比如,它会抓取一些不需要的文本,比如JavaScript的源代码。而且,它没有正确处理HTML实体。举个例子,我希望在HTML源代码中的'
能被转换成文本中的撇号,就像我把浏览器里的内容粘贴到记事本一样。
更新一下:html2text
看起来很不错。它能正确处理HTML实体,并且忽略JavaScript。不过,它生成的文本并不是纯文本,而是需要转换成纯文本的markdown格式。它没有提供示例或文档,但代码看起来很简洁。
2 个回答
1
我并不是说“从浏览器复制粘贴”是一个简单的操作。比如,如果整个页面都被一个透明的浮动 div
遮住了,会发生什么呢?如果里面有表格呢?还有动态内容怎么办?
BeautifulSoup 是一个强大的解析工具;你只需要知道怎么用它(其实很简单,比如可以轻松地从页面中去掉 script
标签)。幸运的是,它有很多 文档 可以参考。
你可以使用 xml.sax.utils.unescape
来处理 HTML 实体。
6
你需要使用 urllib2 这个Python库 来从网站获取HTML内容,然后再从这些HTML中提取你想要的文本。
可以使用 BeautifulSoup 来解析HTML。
import BeautifulSoup
resp = urllib2.urlopen("http://stackoverflow.com")
rawhtml = resp.read()
#parse through html to get text
soup=BeautifulSoup(rawhtml)