如何在XPath中排除嵌套在另一表格内的子表格以提取目标数据
替代的嵌套ESD内容提取方案
你现有写法可以正常生效,也可以根据场景选更简洁的实现:
- 基于
data-group属性精准定位(推荐,结构匹配更稳定)://tr[@data-group="7"]//table//td/text() - 基于内容特征模糊定位(适合结构频繁变动的场景):
//td[contains(text(), "EN") and contains(text(), "ESD")]/text()
提取排除ESD内容的其余所有数据
可以通过XPath的排除条件直接实现,筛选所有不属于内部嵌套表格的td文本即可:
//table[@class="pd-table"]//td[not(ancestor::table[parent::td])]/text()
该写法的逻辑是:匹配class为pd-table的表格下所有td节点,排除祖先节点中包含「父节点为td的table」(也就是你已经提取过的内部嵌套表格)的节点,最终返回的就是除EN 6547 ESD、EN 8901 ESD之外的所有文本内容,调用.getall()即可拿到全部结果。
内容的提问来源于stack exchange,提问作者Lenin Espindola
相关产品推荐
相关产品推荐

