以下表为例,我知道如何通过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>
假设您正在用以下XPath匹配'Title_A':
//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
html使用css, xml使用xpath。+
是css下一个相邻的兄弟选择器。
doc.at('td[text()="Title_A"] + td')
我在Title_A周围看到一些空格,所以可能是:
doc.at('td[text()*="Title_A"] + td')