以下表为例,我知道如何通过xapth的text()函数匹配<td>'Title_A'</td>
,有没有直接的方法可以选择<td> text_unknown </td>
之后呢? :
<table>
<tr><td rowspan=2> Title_A </td> <td> text_unknown </td></tr>
<tr><td> text_unknown </td></tr>
<tr><td rowspan=2> Title_B </td> <td> text_unknown </td></tr>
<tr><td> text_unknown </td></tr>
<tr><td rowspan=4> Title_C </td> <td> text_unknown </td></tr>
<tr><td> text_unknown </td></tr>
<tr><td> text_unknown </td></tr>
<tr><td> text_unknown </td></tr>
</table>
答案 0 :(得分:2)
假设您将'Title_A'与以下XPath匹配:
//td[text()='Title_A']
下一个单元格将是
//td[text()='Title_A']/following-sibling::td[1]
或者,如果您已在变量中包含标题单元格:
title_a = doc.xpath("//td[text()='Title_A']")
然后您可以使用DOM方法next_sibling
:
next_cell = title_a.next_sibling
答案 1 :(得分:0)
对于xml使用css,对xml使用xpath。 +
是css下一个相邻的兄弟选择器。
doc.at('td[text()="Title_A"] + td')
我看到Title_A周围有一些空格,所以可能:
doc.at('td[text()*="Title_A"] + td')