要匹配所有只有文本而没有子节点的节点,可以使用XPath表达式。XPath是一种在XML文档中查找信息的语言,也可以用于HTML文档。
假设我们有以下HTML文档:
<div>
<p>Hello, World!</p>
<span>This is a span.</span>
<div>Another div with <b>bold</b> text.</div>
<p>Just text.</p>
</div>
我们希望匹配所有只有文本而没有子节点的<p>
标签。可以使用以下XPath表达式:
from lxml import etree
html = '''
<div>
<p>Hello, World!</p>
<span>This is a span.</span>
<div>Another div with <b>bold</b> text.</div>
<p>Just text.</p>
</div>
'''
tree = etree.HTML(html)
nodes = tree.xpath('//p[text() and not(*)]')
for node in nodes:
print(node.text)
//p
:选择所有的<p>
元素。[text()]
:确保该元素包含文本内容。[not(*)]
:确保该元素没有子元素。Just text.
lxml
库的HTMLParser
来处理不规范的HTML。lxml
库的HTMLParser
来处理不规范的HTML。<p>
标签内没有文本内容,但也没有子节点,可能需要进一步检查。<p>
标签内没有文本内容,但也没有子节点,可能需要进一步检查。通过这种方式,可以精确地匹配所有只有文本而没有子节点的节点,并且可以根据具体需求进行调整和优化。
领取专属 10元无门槛券
手把手带您无忧上云