Selenium 无法在加载缓慢的页面上找到特定元素

zdaman101

我试图抓取网站篮球参考,但遇到了一个我似乎无法解决的问题。我正在尝试为每场比赛获取框得分元素。这是我可以使用 urlopen 轻松完成的事情,但是网站的其他部分需要 Selenium 我想我会用 Selenium 重写整个过程

问题似乎是,即使我等到使用 WebDriverWait 看到第一个元素加载时才开始抓取,当我继续抓取元素时,我也不会返回任何内容。

我发现有趣的一件事是,如果我使用来自 urlopen 的结果进行完整的站点打印,带有类似 print (uClient.read()) 的结果,与使用 print (driver .page_source)。即使我将 ImplicitlyWait 设置为 5 分钟。

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC



driver = webdriver.Chrome('/usr/local/bin/chromedriver')
driver.wait = WebDriverWait(driver, 10)
driver.get('https://www.basketball-reference.com/boxscores/')
driver.wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="content"]/div[3]/div[1]')))


box = driver.find_elements_by_class_name('game_summary expanded nohover')

print (box)

driver.quit()
斯瓦鲁普人道

试试下面的代码,它在我的电脑上工作。如果您仍然遇到问题,请告诉我。

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.wait = WebDriverWait(driver, 60)
driver.get('https://www.basketball-reference.com/boxscores/')
driver.wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="content"]/div[3]/div[1]')))

boxes = driver.wait.until(
    EC.presence_of_all_elements_located((By.XPATH, "//div[@class=\"game_summary expanded nohover\"]")))

print("Number of Elements Located : ", len(boxes))

for box in boxes:
    print(box.text)
    print("-----------")

driver.quit()

如果它解决了您的问题,请将其标记为答案。谢谢

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章