过滤掉HTML标签并解析python中的实体

时间:2020-03-05 18:45:50  来源:igfitidea点击:

因为正则表达式使我感到恐惧,所以我试图找到一种方法来删除所有HTML标签并从Python中的字符串解析HTML实体。

解决方案

回答

如何解析HTML数据并在解析器的帮助下提取数据?

我会尝试类似《 Dive Into Python》一书中第8.3章中所述的内容。

回答

尽管我同意Lucas的观点,正则表达式并不那么令人恐惧,但我仍然认为我们应该使用专门的HTML解析器。这是因为HTML标准足够繁琐(尤其是如果我们要任意分析从Internet删除的" HTML"页面),则需要编写大量代码来处理特殊情况。似乎python开箱即用。

我们还应该检查TidyLib的python绑定,该绑定可以清除损坏的HTML,从而使任何HTML解析的成功率都更高。

回答

我们可能需要比正则表达式更复杂的东西。网页通常带有尖括号,这些尖括号不是标签的一部分,例如:

<div>5 < 7</div>

用正则表达式剥离标签将返回字符串" 5"并处理

< 7</div>

作为单个标签并将其剥离。

我建议我们寻找已经为我们完成此工作的已编写代码。我经过搜索后发现:http://zesty.ca/python/scrape.html它还可以解析HTML实体。

回答

使用BeautifulSoup!这是完美的选择,我们将收到可疑美德的标记,并且需要从中获取合理的信息。只需传入原始文本,提取所有字符串标签,然后将它们加入即可。

回答

使用lxml是最适合python的xml / html库。

import lxml.html
t = lxml.html.fromstring("...")
t.text_content()

如果只想清理html,请查看lxml.html.clean模块

回答

正则表达式并不可怕,但是编写自己的正则表达式来剥离HTML是确保疯狂的必经之路(也行不通)。遵循智慧的道路,并使用许多优秀的HTML解析库之一。

Lucas的示例也被破坏了,因为" sub"不是Python字符串的方法。我们必须"导入re",然后调用re.sub(样式,repl,字符串)。但这既不存在也不存在,因为对我们问题的正确答案不涉及编写任何正则表达式。

回答

鉴于人们在这里在其他答案中表现出的感觉,我想说使用正则表达式可能不是我们所处情况的最佳主意。寻找经过尝试和测试的东西,然后将我以前的答案当作证明正则表达式不必那么吓人的证明。