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