如何以递归方式匹配包含文本的所有子节点。
如果我有像
这样的树table
tr
td
"hello"
td
b
"hi"
tr
td
"salud"
td
em
"bonjour"
如何将表节点中的每个字符串与xpath匹配? 像“// table / * / text()”这样的东西?
答案 0 :(得分:3)
您提供的XPath表达式几乎已经正确:
//table//text()
将获取文档中所有表中的所有文本节点。
答案 1 :(得分: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