2014-10-02 87 views
0
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">元樹:.tail()始終返回NONE

<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> 

但是我得到的是無

回答

0

tail的取一切,由lxml定義爲:

直接跟着的文字S中的元素,直到下一個元素在XML樹

由於您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()") 

這將打印:

['Hello', 'test', 'test', ' ', 'test', 'Failed'] 

檢查lxml docs