Xpath如何从后代节点获取文本

我有这样的事情:


<div id="m0">

...

 <tr>

  <td></td>

  <td></td>

  <td>Radio</td>

 </tr>

</div>


<div id="m1">

...

<tr>

  <td></td>

  <td></td>

  <td> 

    <a>TV channel</a>

    <font color="#555555">...</font>

  </td>

</tr>

<tr>

  <td></td>

  <td></td>

  <td>

     <i> </i>

  </td>

</tr>

<tr>

  <td></td>

  <td></td>

  <td> 

     <i> Other channel </i>

  </td>

</tr>

我想得到这个结果: ['Radio','TV Channel',' ','Other channel]


我试过这样做: ch_nodes=tree.xpath('//div[@id="%s"]/table[@class= "fl"]/tr/td[3]/descendant-or-self::*'%div)


之后,对于每个节点,我都会得到文本,但它给了我不想要的节点,例如<font>内容。


我也试过这个:ch_nodes=tree.xpath('//div[@id="%s"]/table[@class= "fl"]/tr/td[3]/descendant-or-self::*[2]'%div)但是如果没有子节点,它不会给我自我内容。


我怎样才能得到['Radio','TV Channel',' ','Other channel]?


慕婉清6462132
浏览 172回答 1
1回答

肥皂起泡泡

从tr以下位置获取每个第一个文本节点:$x("//table//tr//*[1]/text()")如果您想从以下位置获取每个第一个非空文本节点tr:$x("//table//tr//*[boolean(string-length(normalize-space(text())))][1]/text()")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python