如何使用XPath选取前序h3含Tier或Games的对应表格数据
正确XPath表达式及错误说明
现有表达式的问题
- 语法错误:
or (., 'Games')漏写contains函数,不符合XPath语法规范,实际运行时该条件会恒为真,导致匹配范围异常扩大 - 匹配范围不符合要求:
- 第一个表达式使用
following::table会选中h3之后所有层级的全部table元素,并非仅匹配h3的直接同级后续表格 - 第二个表达式使用
preceding-sibling::h3会匹配表格前面所有同级h3元素,哪怕两者中间隔了其他标签,不满足「直接前序兄弟」的要求
- 第一个表达式使用
正确XPath写法
//table[preceding-sibling::*[1][self::h3[contains(., 'Tier') or contains(., 'Games')]]]/tbody/tr/td[1]
逻辑说明
- 先定位所有
<table>元素 - 筛选条件:该表格的第一个前序同级元素是
<h3>标签,且该h3的文本内容包含Tier或Games - 最终提取符合条件的表格
<tbody>下所有<tr>的第一个<td>内容
内容的提问来源于stack exchange,提问作者Pavle Ćurčić
相关产品推荐
相关产品推荐

