You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium点击Yahoo Finance Cookie同意按钮失败的问题求助

Selenium点击Yahoo Finance Cookie同意按钮失败的问题求助

你好呀!我看你在爬取Yahoo Finance时,卡在了Cookie同意按钮的点击上,咱们一起来解决这个问题~

问题根源

你当前代码最后一行的问题出在By.CLASS_NAME的使用上:

  • Selenium的By.CLASS_NAME只能接收单个类名,不能直接传入多个空格分隔的类名;
  • 你还写错了类名,按钮实际的class属性是btn secondary accept-all consent_reject_all_2,不是你写的btn secondary reject-all。

可行的解决方案

下面给你几种靠谱的定位方式,任选一种都能解决问题:

方案1:用CSS选择器匹配多个类名

CSS选择器可以通过.连接多个类名来精准定位元素,修改后的代码如下:

accept = driver.find_element(By.CSS_SELECTOR, "button.btn.secondary.accept-all.consent_reject_all_2").click()

方案2:通过按钮文本定位(XPATH)

如果按钮的文本"Accepter tout"不会轻易变化,这种方式会更直观:

accept = driver.find_element(By.XPATH, "//button[text()='Accepter tout']").click()

方案3:使用显式等待(更推荐)

代替time.sleep()的硬等待,用显式等待可以确保元素加载完成、可点击后再操作,避免因网络延迟导致的失败:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 替换原来的time.sleep(1)和点击代码
wait = WebDriverWait(driver, 10)  # 最多等待10秒
accept_btn = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn.secondary.accept-all.consent_reject_all_2")))
accept_btn.click()

额外小修正

你的代码里还有个URL拼接的小错误:driver.get里用了AMZN的固定路径,但拼接的是keyword变量,应该改成:

driver.get(f"https://finance.yahoo.com/quote/{keyword}/history?p={keyword}")

这样就能正确跳转到你指定关键词的页面啦~

备注:内容来源于stack exchange,提问作者Julien Pierrel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 08:48:12