这个问题在这里已经有答案了:
在Python中从字符串中剥离HTML
(27个答案)
(27个答案)
七年前关闭的
我有这样一个文本:
text=”“”<;div>;
<;h1>;标题<;/h1>;
<;p>;长文本……<;/p>;
<;a href=“”>;a链接<;/a>;
<;/div>;“”“
使用纯Python,无需外部模块,我希望:
>&燃气轮机&燃气轮机;打印删除标签(文本)
标题一篇长文本。。。。。链接
我知道我可以使用lxml.html.fromstring(text.text\u content()实现这一点,但我需要在纯Python中使用内置或std library for 2.6实现这一点+
我该怎么做
使用正则表达式
使用正则表达式,您可以清除中的所有内容<&燃气轮机:
重新导入
#根据@freylis的建议,只编译一次
CLEANR=re.compile('<;*?>;'))
def cleanhtml(原始html):
cleantext=re.sub(CLEANR',原始html)
返回干净文本
一些HTML文本还可以包含未括在括号中的实体,例如“&;nsbm”。如果是这样,那么您可能希望将正则表达式编写为
CLEANR=re.compile('<;*?>;|&;([a-z0-9]+|#[0-9]{1,6}|x[0-9a-f]{1,6});)
此链接包含有关此的更多详细信息
使用BeautifulSoup
您还可以使用BeautifulSoup附加包查找所有原始文本
调用BeautifulSoup时,需要显式设置解析器
我推荐”;lxml“如备选答案中所述(比默认答案(html.parser)更健壮)(即无需额外安装即可使用)
来自bs4导入组的
cleantext=BeautifulSoup(原始html,“lxml”).text
但这并不妨碍您使用外部库,因此我推荐第一种解决方案
编辑:要使用lxml,您需要pip安装lxml