过滤掉HTML标签并解析python中的实体
因为正则表达式使我感到恐惧,所以我试图找到一种方法来删除所有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,字符串)。但这既不存在也不存在,因为对我们问题的正确答案不涉及编写任何正则表达式。
回答
鉴于人们在这里在其他答案中表现出的感觉,我想说使用正则表达式可能不是我们所处情况的最佳主意。寻找经过尝试和测试的东西,然后将我以前的答案当作证明正则表达式不必那么吓人的证明。