在Python中从HTML提取文本

-1 投票
2 回答
3388 浏览
提问于 2025-04-17 10:08

可能重复的问题:
使用Python从HTML文件中提取文本

在Python中,有什么好的方法可以像浏览器那样提取HTML页面中的文本,就像你复制粘贴一样?

2 个回答

2

monkut提到的问题并没有提供任何关于如何用Python解决这个具体问题的方案。虽然BeautifulSoup和lxml都可以用来解析HTML,但从解析HTML到得到一个格式接近原始HTML文本的结果之间,还有很大的一步。

为了实现这个目标,我使用了一些非Python的解决方案(我在博客上写过,但这里不打算链接,怕不符合StackOverflow的礼仪)。如果你使用的是*nix系统,可以从德国安装这个html2text包。在MacOS上,可以通过Homebrew($ brew install html2text)或Macports($ sudo port install html2text)轻松安装,在其他*nix系统上也可以通过它们的包管理器安装。这个工具有很多有用的选项,我通常这样使用:

html2text -nobs -ascii -width 200 -style pretty -o filename.txt - < filename.html

你也可以安装一个基于文本的浏览器(比如w3m),用下面的命令从HTML生成格式化的文本: w3m filename.html -dump > file.txt

当然,你也可以通过Python的subprocess模块,或者流行的envoy包装器来访问这些解决方案。

即使经过这些努力,你可能会发现一些重要的信息(比如<u>标签)没有以你喜欢的方式处理,但这些是我找到的目前最好的选项。

5

BeautifulSoup 是一个很受欢迎的工具,用来读取和解析HTML网页。

撰写回答