Selenium Chromedriver 失败并出现堆栈跟踪错误消息

问题描述 投票:0回答:1

我正在使用 Selenium (Python) 从雅虎财经抓取数据。当使用 WebDriverWait 从此页面查找给定日期的收盘价时,我收到如下异常:

 Message: 
Stacktrace:
0   chromedriver                        0x0000000104c92940 chromedriver + 4368704
1   chromedriver                        0x0000000104c8add4 chromedriver + 4337108
2   chromedriver                        0x00000001048aec04 chromedriver + 289796
3   chromedriver                        0x00000001048f0e00 chromedriver + 560640
4   chromedriver                        0x00000001049295ec chromedriver + 792044
5   chromedriver                        0x00000001048e5ab4 chromedriver + 514740
6   chromedriver                        0x00000001048e650c chromedriver + 517388
7   chromedriver                        0x0000000104c56e5c chromedriver + 4124252
8   chromedriver                        0x0000000104c5bc4c chromedriver + 4144204
9   chromedriver                        0x0000000104c3c824 chromedriver + 4016164
10  chromedriver                        0x0000000104c5c57c chromedriver + 4146556
11  chromedriver                        0x0000000104c2e2d8 chromedriver + 3957464
12  chromedriver                        0x0000000104c7bec4 chromedriver + 4275908
13  chromedriver                        0x0000000104c7c040 chromedriver + 4276288
14  chromedriver                        0x0000000104c8aa34 chromedriver + 4336180
15  libsystem_pthread.dylib             0x00000001858b2f94 _pthread_start + 136
16  libsystem_pthread.dylib             0x00000001858add34 thread_start + 8

这不会使脚本完全崩溃,但不会收集任何数据。我无法在这里发布完整的代码,但这仅在查找此特定元素时发生:

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


driver = webdriver.Chrome()
url = f"https://finance.yahoo.com/quote/AMZN/history"
driver.get(url)

date = "Feb 29, 2024"

try:
    price_element = WebDriverWait(driver, 120).until(
        EC.presence_of_element_located((By.XPATH, f"//table[@class='table svelte-ewueuo']/tbody/tr[td[text()='{date}']]/td[count(//table[@class='table svelte-ewueuo']/thead/tr/th[text()='Date']/preceding-sibling::th)+5]"))
    )
    price = price_element.text
    print(price)
except Exception as e:
    print(f"EXCEPTION: {e}")

driver.quit()

我已经验证所有 xpath 都是正确的,并且当发生这种情况时,该元素始终在 Selenium 浏览器窗口中可见(无论是字面上还是在 HTML 中)。奇怪的是,我在前两次迭代中检索数据(迭代股票列表)时没有任何问题,但这种情况总是发生在第三次迭代以及之后的每次迭代中。

我使用的是 macOS 14.4.1、Selenium 4.20、Python 3.9.1 和版本 124.0.6367.208(官方版本)(arm64)

python selenium-webdriver web-scraping selenium-chromedriver stack-trace
1个回答
0
投票

我遇到了同样的问题,并使用另一个版本的 selenium 进行修复,尝试使用以下命令尝试 4.6.0 版本:pip install selenium==4.6.0。使用此版本的 selenium,您不再需要管理浏览器驱动程序。我希望我对你有帮助

© www.soinside.com 2019 - 2024. All rights reserved.