首页 / 知识

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

2023-04-13 19:21:00

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

Filter out HTML tags and resolve entities in python

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


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

1
2
3
import lxml.html
t = lxml.html.fromstring("...")
t.text_content()

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


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


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

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


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

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


如果您使用django,也可以使用
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#striptags
;)


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

1
 ;lt;div;gt;5 ;lt; 7;lt;/div;gt;

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

1
 ;lt; 7;lt;/div;gt;

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

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


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


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

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


标签实体字符串删除

最新内容

相关内容

热门文章

推荐文章

标签云

猜你喜欢