首页 > 解决方案 > 使用 selenium,我怎样才能只找到前 N 个元素以更快地运行?

问题描述

目标是尝试从大型 html 文件中更快地解析出字段。html 的结构不是很好,并且有一万个“div 标签”,没有要搜索的名称/id。我只能搜索带有“普通股票”之类的模式的文本,但所需的字段可能不是第一个。

我用过:

browser = webdriver.Firefox()
browser.get(MyLocalFileName)
browser.find_elements(By.TAG_NAME, "div")

find_elements 花了 5 分钟来解析这个文件。请注意,给出第一个元素的 find_element 可能不包含我需要的字段。但是 find_elements 会花很长时间,而且很浪费。

例如,我试图解析多少股:
相关行:“4601075000 股普通股”
不相关行:“XXX 公司增加流通普通股的股份”

我能以某种方式找到第一个元素(如果不需要的话)循环到“下一个元素”吗?还是我只能“找到前 N 个元素”?

标签: pythonselenium

解决方案


您可以考虑将定位器策略更改为 XPath

XPath 提供position()函数,允许您将结果集限制在给定范围内,因此如果您调用find_elements_by_xpath方法,例如:

driver.find_elements_by_xpath("//div/*[position()<=3]")

它只会返回前 3 个 div 对象,而不是扫描整个DOM

更多信息:XPath 运算符和函数


推荐阅读