元素树:.tail()始终返回NONE

时间:2014-10-02 15:13:14

标签: elementtree

parser = etree.HTMLParser()
tree   = etree.parse(StringIO(input), parser)

for target in tree.findall("//tr[@class='error']"):
print target.tail

我想在此之后执行上面的代码 trclass="error"id="Testcase_5">

 <tr class="error" id="Testcase_5"><td><a href="blabla">Hello</a></td><td>test</td><td>test</td>    <td>test</td><td>Failed</td><td></td><td></td></tr>

然而,我得到的只是没有

1 个答案:

答案 0 :(得分:0)

根据{{​​1}}的定义,

tail是:

  

直接跟在元素之后的文本,直到XML树中的下一个元素

由于您的lxml课程没有tr以外的任何文字,我们只有一个元素,因此会返回<tr> .... </tr>

假设None是:

input

然后输出为'<tr class="error" id="Testcase_5"><td><a href="blabla">Hello</a></td><td>test</td><td>test</td> <td>test</td><td>Failed</td><td></td><td></td></tr>i am the tail'


回到你的问题,如果要提取i am the tail节点中的所有文本,你可以这样做:

<tr>

这将打印:

parser = etree.HTMLParser()
tree   = etree.parse(StringIO(input), parser)

for target in tree.findall(".//tr[@class='error']"):
    #print target.tail
    print target.xpath("//text()")

检查lxml docs