首页 > 后端开发 > Python教程 > 如何使用 Selenium 和 Python 高效定位具有多个类名的 Web 元素?

如何使用 Selenium 和 Python 高效定位具有多个类名的 Web 元素?

Linda Hamilton
发布: 2024-12-11 18:57:13
原创
237 人浏览过

How Can I Efficiently Locate Web Elements with Multiple Class Names Using Selenium and Python?

使用 Selenium 和 Python 按类名查找元素

在网页抓取场景中,经常需要在网页上定位元素动态地。为了克服 BeautifulSoup 在处理动态内容方面的局限性,可以集成 Selenium,以便在抓取之前等待元素通过 JavaScript 加载。

考虑以下 Python 代码:

element = WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.class, "ng-binding ng-scope")))
登录后复制

在此这行代码的目的是为元素标识指定一个类名。但是,由于 By.class 参数中存在多个类名,可能会发生错误。 Selenium 不支持通过 By.class 传递多个类名。

解决方案

要解决此问题,请考虑以下建议:

  • 使用visibility_of_element_ located()或visibility_of_element_ located()代替presence_of_element_ located() element_to_be_clickable() 实现更精确的元素交互。
  • 使用以下方法结合 ID 和 CLASS 属性进行元素标识技术:

CSS_SELECTOR:

element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".ng-binding.ng-scope#tabla_evolucion")))
登录后复制

XPATH:

element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//*[@class='ng-binding ng-scope' and @id='tabla_evolucion']")))
登录后复制

通过合并这些修改,您可以有效地定位通过 JavaScript 动态加载的网页上的元素,从而实现成功的网页刮擦。

以上是如何使用 Selenium 和 Python 高效定位具有多个类名的 Web 元素?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板