如何递归匹配所有包含文本的子节点。
如果我有一棵树
table
tr
td
"hello"
td
b
"hi"
tr
td
"salud"
td
em
"bonjour"
如何将表节点中的每个字符串与 xpath 匹配?像“//table/*/text()”这样的东西?
您给出的 XPath 表达式已经几乎是正确的:
//table//text()
将为您提供文档中所有表格中的所有文本节点。
下面的呢?
from lxml import etree
from StringIO import StringIO
input = '''
<table>
<tr>
<td>hello</td>
<td><b>hi</b></td>
</tr>
<tr>
<td>salud</td>
<td><em>bonjour</em></td>
</tr>
</table>
'''
parser = etree.HTMLParser()
tree = etree.parse(StringIO(input), parser)
for p in tree.xpath("//table/tr/td//text()"):
print p
...给出输出:
hello
hi
salud
bonjour