python ElementTree 查找具有特定文本值的子元素
我搜索了很久,想知道有没有办法直接根据标签的文本值来获取一个子元素?
举个例子:
<a>
<b>
<c>h</c>
</b>
<b>
<c>j</c>
</b>
</a>
假设我想获取子元素“b”,它的“c”文本值等于“j”。有没有其他方法可以做到这一点,而不是先获取所有的“b”子元素,然后一个个检查它们的“c”值呢?
1 个回答
5
如果你使用lxml
这个库,你可以用XPath表达式//c[text()='j']
来查找内容。
import lxml.etree as et
doc = '''
<a>
<b>
<c>h</c>
</b>
<b>
<c>j</c>
</b>
</a>
'''
tree = et.fromstring(doc)
tree.xpath("/a/b/c[text()='j']")
这个回答很相关:如何在XPath (lxml)中匹配元素的内容?