首页 > 解决方案 > 我可以在使用同级语句之前或之后获取值吗?

问题描述

想要在使用同级语句之前或之后获取值?

HTML 代码

<tr><td width="295" align="right" class="bg1"><div class="barBg2"><div class="info" style="width:60%;"></div></div></td><td width="50" align="center" class="bg1">60%</td><td width="110" align="center" class="bg3">半場控球率&lt;/td><td width="50" align="center" class="bg1">40%</td><td width="295" align="left" class="bg1"><div class="barBg"><div class="info" style="width:40%;"></div></div></td><iframe id="tmp_downloadhelper_iframe" style="display: none;"></iframe></tr>

HTML 显示输出

60%半场控球率40%

Python代码

#coding:utf-8
from selenium import webdriver

driver=webdriver.Firefox()
driver.get('url')

texts = driver.find_elements_by_xpath('//*[@id="matchData"]/div[5]//tr//td[preceding-sibling::td="半場控球率" and following-sibling::td="半場控球率"]')

print texts
driver.close()

预期产出

60% 40%

标签: pythonselenium-webdriverxpath

解决方案


[preceding-sibling::td="半場控球率" and following-sibling::td="半場控球率"] 

谓词表示您要选择具有“半场控球率”文本内容的前后同级元素​​。如果要选择具有文本“半场控球率”的前面或后面的兄弟元素,则需要

[preceding-sibling::td="半場控球率" or following-sibling::td="半場控球率"]

另请注意,在您的情况下textsWebElements 的列表。如果您想获取文本节点,可以尝试

texts = [td.text for td in driver.find_elements_by_xpath('//td[(preceding-sibling::td="半場控球率" or following-sibling::td="半場控球率") and not(div)]')]

推荐阅读