python - 在 Selenium + Python 中使用重复类查找元素
问题描述
我正在使用 Selenium + Python 在 Battlefy 页面上抓取匹配结果,以便以后进行操作并输入数据库。我正在尝试使用 Selenium 抓取团队的名称和结果,因为动态加载 JS 需要我使用无头浏览器。但是,我正在尝试使用班级名称获取每个大学的文本,但是使用 Selenium 的find_elements_by_class_name
方法似乎不起作用。
当前代码:
>>> chrome_path = r"C:\Users\...\chromedriver.exe"
>>> driver = webdriver.Chrome(chrome_path)
>>> driver.get("https://battlefy.com/college-league-of-legends/2020-north-conference/5de98dd4196d1311d9e6edbd/stage/5e23b6e395e72856dac06997/bracket/1")
>>> team = driver.find_elements_by_class_name("team-name overflow-ellipsis float-right")
>>> for item in teams:
print(item.text)
它不打印任何内容并返回一个空数组。我一定做错了什么。当班级名称覆盖每个团队名称的文本时,如何抓取它?
解决方案
team-name overflow-ellipsis float-right
是类的组合,当您使用find_elements_by_class_name
/find_element_by_class_name
方法时,定位器将在内部转换为 CSS 但 selenium 库。因此,您必须用 . 掩盖所有空格(空白).
。
试试下面。
team = driver.find_elements_by_class_name("team-name.overflow-ellipsis.float-right")
编辑1:
这是 selenium 的实现,我们可以在其中看到定位器是预先添加的,.
并且它在By.CSS_SELECTOR
内部使用。所以,我们不必.
为第一个类名添加。
推荐阅读
- javascript - 在jQuery中选择当前时如何禁用或非活动复选框
- angular - Spring boot 中的 Cors 策略问题:自定义标头问题
- php - ACF 逗号分隔的数组值
- java - 当我安装了 jdk 13 但在 cmd 中它显示了 java 7 的版本
- javascript - 有没有办法从我的例子中检查和取消选中“复选框”?
- gridview - 如何在函数中使用 $categoryId
- python - Python - 字典 - 如果循环变量没有改变
- blob - react-native 将文件从本地存储上传到 firebase 网络请求失败
- python - 气流,从 dag 调用 dags 会导致重复的 dagruns
- java - 我想在 Android Studio 的 Retrofit 中将温度值从单位转换为英制