XPath 匹配包含文本的所有节点
我想知道怎么递归地匹配所有包含文本的子节点。
如果我有一个这样的树结构:
table
tr
td
"hello"
td
b
"hi"
tr
td
"salud"
td
em
"bonjour"
我该如何用xpath匹配表格节点中的每一个字符串呢?是不是像这样 "//table/*/text()"?
2 个回答
0
下面这个怎么样?
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
3
你给的XPath表达式已经差不多正确了:
//table//text()
这个表达式会帮你找到文档中所有表格里的所有文本内容。