python - 我可以在使用同级语句之前或之后获取值吗?
问题描述
想要在使用同级语句之前或之后获取值?
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%
解决方案
[preceding-sibling::td="半場控球率" and following-sibling::td="半場控球率"]
谓词表示您要选择具有“半场控球率”文本内容的前后同级元素。如果要选择具有文本“半场控球率”的前面或后面的兄弟元素,则需要
[preceding-sibling::td="半場控球率" or following-sibling::td="半場控球率"]
另请注意,在您的情况下texts
是WebElements 的列表。如果您想获取文本节点,可以尝试
texts = [td.text for td in driver.find_elements_by_xpath('//td[(preceding-sibling::td="半場控球率" or following-sibling::td="半場控球率") and not(div)]')]
推荐阅读
- php - 使用 rsort(); 递减数字
- python - 如何使用 python kubernetes api 按标签获取 pod?
- ios - UITableViewCell 添加子视图后不会调整大小
- vsto - 如何将形状粘贴到powerpoint c# interop中幻灯片中存在的其他形状下方
- php - 从直接下载链接下载文件并保存到服务器 - PHP
- laravel - 抱歉,在 laravel 中尝试编辑 null 值时找不到您要查找的页面
- azure - 如何在 VSTS 上的发布管道中替换 Azure 函数的环境变量
- python - numpy.fft.fft 和 numpy.fft.rfft 有什么区别?
- ssl - 为什么使用 ssl 的 MQTT Over Websocket 不起作用
- jquery - 引导向导 - 转到特定步骤