
Filter out HTML tags and resolve entities in python因为正则表达式使我感到恐惧,所以我试图找到一种方法来删除所有HTML标签并从Python中的字符串解析HTML实体。 使用lxml是最适合python的xml / html库。
如果您只想清理html,请查看lxml.html.clean模块 使用BeautifulSoup!这是完美的选择,您将收到可疑美德的标记,并且需要从中获取合理的信息。只需传入原始文本,提取所有字符串标签,然后将它们加入即可。 尽管我同意Lucas的观点,正则表达式并不那么令人恐惧,但我仍然认为您应该使用专门的HTML解析器。这是因为HTML标准足够繁琐(尤其是如果您要随意分析从Internet删除的" HTML"页面),则需要编写大量代码来处理特殊情况。看来python包含一个开箱即用的功能。 您还应该检查TidyLib的python绑定,该绑定可以清除损坏的HTML,从而使任何HTML解析的成功率都更高。 如何解析HTML数据并在解析器的帮助下提取数据? 我会尝试类似《 Dive Into Python》一书中第8.3章所述的作者
如果您使用django,也可以使用 您可能需要比正则表达式更复杂的东西。网页通常带有尖括号,这些尖括号不是标签的一部分,例如:
用正则表达式剥离标签将返回字符串" 5"并处理
作为单个标签并将其剥离。 我建议寻找已经为您完成此工作的已编写代码。我经过搜索发现:http://zesty.ca/python/scrape.html它还可以解析HTML实体。 鉴于人们在这里在其他答案中所表现出的感觉,我想说使用正则表达式可能不是您所处情况的最佳主意。寻找经过尝试和测试的东西,然后将我以前的答案当作证明正则表达式不必那么吓人的证明。 正则表达式并不可怕,但是编写自己的正则表达式来剥离HTML是确保疯狂的必经之路(也行不通)。遵循智慧的道路,并使用许多优秀的HTML解析库之一。 Lucas的示例也被破坏了,因为" sub"不是Python字符串的方法。您必须"导入re",然后调用re.sub(样式,repl,字符串)。但这既不存在也不存在,因为对您问题的正确答案不涉及编写任何正则表达式。 |