lxml的输入文本问题



我要在元素树上找到一个文本,但是有两种情况我无法获取文本,它显示"无">

第一种情况:第一个标签有链接

from lxml import etree 
node = etree.fromstring("<a xml = 'www.www.com'><c>bum</c></a>")
print node.findtext('c',default = 'what happened?')

第二种情况:文本标签的父标签没有内容

from lxml import etree 
node = etree.fromstring('<a><b><c>bum</c></b></a>')
print node.findtext('c', default = 'what happened?')

成功的代码:没有没有内容的链接和标签

from lxml import etree 
node = etree.fromstring('<a><c>bum</c></a>')
print node.findtext('c')

我想知道我如何在这两种情况下获得流浪汉的短信

谢谢

使用 .iter 查找正确的标记,然后.text

node1 = etree.fromstring("<a xml = 'www.www.com'><c>bum</c></a>")
node2 = etree.fromstring('<a><b><c>bum</c></b></a>')
for c_node in node1.iter(tag='c'):
    print(c_node.text)
    # bum
for c_node in node2.iter(tag='c'):
    print(c_node.text)
    # bum

请注意,在第一种情况下print(node1.find('c').text)也可以工作,但在第二种(print(node2.find('c').text)(中则不起作用。

最新更新