基于两个非同级节点条件的XPath元素选择方法问询
正确的XPath筛选语法
根据你的需求,分两种常见HTML结构场景给出对应XPath表达式:
场景1:
是目标的同级前置节点(对应你提到的preceding-sibling)
如果HTML结构中<h2 class="_2MeiE">PARIS</h2>位于<div class="_1rOLI _My0B">前方且为同级节点,使用以下XPath:
//div[@class="_1rOLI _My0B" and preceding-sibling::h2[@class="_2MeiE" and text()="PARIS"]]//a[@class="_1ufH4" and .//div[@class="_16U2O typography-h220" and text()="20:30"]]
语法逻辑:
preceding-sibling::h2[@class="_2MeiE" and text()="PARIS"]:筛选出拥有文本为PARIS的指定h2前置同级节点的目标div容器.//div[@class="_16U2O typography-h220" and text()="20:30"]:在目标a元素内部查找包含20:30文本的指定div节点,确保a元素符合时间条件
场景2:
包含在目标内部
如果<h2 class="_2MeiE">PARIS</h2>是<div class="_1rOLI _My0B">的子节点,使用以下XPath:
//div[@class="_1rOLI _My0B" and .//h2[@class="_2MeiE" and text()="PARIS"]]//a[@class="_1ufH4" and .//div[@class="_16U2O typography-h220" and text()="20:30"]]
语法逻辑:
.//h2[@class="_2MeiE" and text()="PARIS"]:筛选出内部包含指定PARIS标题的目标div容器- 后续的a元素筛选逻辑和场景1一致
内容的提问来源于stack exchange,提问作者Matteo Tortella
相关产品推荐
相关产品推荐

