python - 仅在使用 selenium python 的 html 中的特定文本之后查找元素
问题描述
假设我有以下 HTML 代码
<div class="12">
<div class="something"></div>
</div>
<div class="12">
<div class="34">
<span>TODAY</span>
</div>
</div>
<div class="12">
<div class="something"></div>
</div>
<div class="12">
<div class="something"></div>
</div>
现在,如果我使用driver.find_elements_by_class_name("something")
,那么我将获得 HTML 代码中存在的所有类。但我只想在 HTML 中的特定单词(“今天”)之后获取课程。如何排除出现在特定单词之前的类。下一个 div 和类可以在任何级别。
解决方案
您可以使用 XPath 搜索,如下所示:
driver.find_elements_by_xpath('//*/text()[.="some specific word"]/following-sibling::div[@class="something"]')
请注意,如果您的真实HTML 与提供的简化HTML不同,您可能需要进行一些修改
更新
如果需要的节点不是兄弟节点,则替换following-sibling
为:following
div
driver.find_elements_by_xpath('//*/text()[.="some specific word"]/following::div[@class="something"]')
推荐阅读
- npm - 如何运行 npm.cmd?
- sockets - TCPDUMP,tcp 标志未从标志 [S] 更改为其他标志值
- react-data-grid - 为什么这些 react-data-grid 列不能调整大小?
- python-3.x - 使用 zmq.Poller() 为我的 REQ/REP zmqclient 添加超时,但该函数不返回任何内容
- python - 如何使用硒从列表中选择一个项目?
- javascript - 在 Javascript Promise 中返回 'resolve' 函数
- ios - 故事板文件更改后如何获取新的本地化字符串
- c# - 使用 FirefoxDriver 获取页面源
- java - 如何在 Kotlin 中使用 Lambda handleHeavyContent()
- android - 更新 chrome 版本 76 后 android 应用程序崩溃