Xpath如何从子节点获取文本

2024-03-28 18:31:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的想法:

<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)但是如果没有子节点,就不会给我self内容。你知道吗

如何获得['Radio','TV Channel',' ','Other channel]?你知道吗


Tags: selfdividtree节点channeltvch
1条回答
网友
1楼 · 发布于 2024-03-28 18:31:53

tr获取每个第一个文本节点:

$x("//table//tr//*[1]/text()")

如果要从tr获取每个第一个非空文本节点:

$x("//table//tr//*[boolean(string-length(normalize-space(text())))][1]/text()")

相关问题 更多 >