【发布时间】:2017-06-08 08:33:37
【问题描述】:
我想提取尖括号中的文本,例如:
<p><verb></p>
结果应该是<verb>。
lxml 和 bs4 在这种情况下不起作用,它们似乎将 <verb> 作为 html 标记。他们无法解析尖括号中的文本,只能返回空字符串。
那么,有什么解决办法吗? THX!
【问题讨论】:
-
这些库做正确的事。 XML 文档中尖括号中的单词是 not 文本,它是一个元素。如果您想使用 XML 解析器解析您的文档,请适当地使用 XML 语法(这里,要获得您想要的结果,应该是
<p>&lt;verb&gt;</p>。 -
你也可以使用
regex -
@spectras 实际上,我不是网页构建者。构建器并不意味着将其作为 HTML 标记,并使用尖括号而不是 < 或 > 只是为了简单起见。我认为库应该检查标签的合法性。我只想提取它,它位于许多 p 标签中。缺少的文本对于构建后续文本很重要。
-
@SimmerChan> 标签是合法的。 XML 允许文档中的任意元素。当您说 “构建器并不意味着将其作为 HTML 标记并使用尖括号而不是 < 或 > 只是为了简单”,您只是说构建器使用的语法看起来像 HTML,但不是 HTML。难怪 HTML 解析器不会给出您想要的结果:您不再解析 HTML,而是看起来像它的自定义语言。这就像在您的问题中写
**this**并抱怨网站将其视为粗体,而您的意思是原始星号。
标签: python regex beautifulsoup lxml