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

时间:2019-03-01 14:51:04

标签: python html xpath web-scraping lxml

我有这样的东西:

<%= f.date_select :birthday_date, start_year: Date.new(2005, 01, 01).year, end_year: Date.today.year %>

我想得到这个结果:<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)

1 个答案:

答案 0 :(得分:0)

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

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

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

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