如何用XPATH获取TradingView中C1与C2指标间的所有div元素
解决TradingView XPATH匹配C1与C2指标间div的问题
原表达式错误原因
你写的XPATH逻辑完全搞反了:
*[following-sibling::div[contains(@data-section-name,'C1 Indicator')] and preceding-sibling::div[contains(@data-section-name,'C2 Indicator')]]
这个表达式是找自身有一个后续兄弟是C1,且有一个前置兄弟是C2的元素,和你要的“位于C1和C2之间”的需求逻辑相反,自然匹配不到目标内容。
正确XPATH写法
根据DOM结构的顺序分两种情况:
情况1:C1在前面,C2在后面(常见结构)
如果DOM是C1 Indicator → 目标div → C2 Indicator的同级结构,用这个表达式:
//div[preceding-sibling::div[contains(@data-section-name,'C1 Indicator')] and following-sibling::div[contains(@data-section-name,'C2 Indicator')]]
情况2:C2在前面,C1在后面
如果结构反过来,调整兄弟轴的顺序:
//div[preceding-sibling::div[contains(@data-section-name,'C2 Indicator')] and following-sibling::div[contains(@data-section-name,'C1 Indicator')]]
额外优化建议
- 如果
data-section-name的取值是精确的(没有额外字符),可以把contains换成精确匹配=,提升效率://div[preceding-sibling::div[@data-section-name='C1 Indicator'] and following-sibling::div[@data-section-name='C2 Indicator']] - 若目标div被其他元素嵌套,不是直接同级,可把
preceding-sibling/following-sibling换成preceding/following,但TradingView的指标区块一般是同级结构,兄弟轴足够用。
内容的提问来源于stack exchange,提问作者jguy
相关产品推荐
相关产品推荐

