想在使用同一个语句的同级之前或之后获取值吗?
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">半場控球率</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%
答案 0 :(得分:1)
[preceding-sibling::td="半場控球率" and following-sibling::td="半場控球率"]
predicate表示您要选择元素为 BOHM且在“半场控球率”文本内容同级之后的元素。如果要选择元素为“ em>”或“ em>”的同级元素之前或之后的元素,则需要
[preceding-sibling::td="半場控球率" or following-sibling::td="半場控球率"]
还要注意,在您的情况下,texts
是WebElement的列表。如果要获取文本节点,可以尝试
texts = [td.text for td in driver.find_elements_by_xpath('//td[(preceding-sibling::td="半場控球率" or following-sibling::td="半場控球率") and not(div)]')]