我想在这个网站上找到所有类名为“af24c._8125e”的元素:“https://www.unibet.eu/betting/sports/filter/football/england/premier_league/matches” 但是当我运行以下代码时:
from selenium import webdriver
import pandas as pd
PATH = 'C:\Program Files (x86)\Chromedriver.exe'
driver = webdriver.Chrome(PATH)
URL = 'https://www.unibet.eu/betting/sports/filter/football/england/premier_league/matches'
driver.implicitly_wait(5)
driver.get(URL)
driver
# Teams vinden en list van maken
Teams = driver.find_element_by_class_name('af24c._8125e')
print(Teams)
它返回一个空列表。 我试过等待更长时间来加载元素,但这没有用,我还认为它可能不起作用,因为元素在 iframe 或其他东西中,但我找不到它。
如何找到这些元素?
答案 0 :(得分:1)
您使用了错误的定位器。
同样隐式等待你肯定不会得到所有的元素。
我建议在找到第一个团队元素后添加一个小睡眠,让所有其他元素加载。
此外,您应该使用 find_elements_by_class_name
而不是 find_element_by_class_name
。
您还需要提取元素文本,而不是打印元素本身。
试试这个:
from selenium import webdriver
import pandas as pd
PATH = 'C:\Program Files (x86)\Chromedriver.exe'
driver = webdriver.Chrome(PATH)
URL = 'https://www.unibet.eu/betting/sports/filter/football/england/premier_league/matches'
driver.implicitly_wait(5)
driver.get(URL)
driver
# Teams vinden en list van maken
#This will wait until first team element is found
driver.find_element_by_class_name('af24c')
#The sleep will ensure all the other elements are loaded
time.sleep(1)
#get all the teams elements
teams = driver.find_elements_by_class_name('af24c')
#Iterate over teams, extract each team element text
for team in teams:
print(team.text)