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

如何通过Fidelity筛选器获取当前股票价格?代码报错求助

解决Fidelity股票价格抓取问题

一、分析requests+BeautifulSoup方案的错误

  1. 元素未找到的核心原因:Fidelity报价页面依赖JavaScript动态渲染内容,requests.get()仅能获取初始静态HTML,此时目标元素<div class="nre-quick-quote-price">还未被渲染,导致soup.find()返回None,后续下标访问触发TypeError。
  2. 属性访问错误:即使找到目标div,它也不存在value属性,价格实际存储在div的文本内容中,需用.text获取而非['value']。

二、分析Selenium方案的错误

  1. 定位器格式错误:Selenium 4及以上版本中,find_element()需明确指定定位方式(如By.CSS_SELECTOR),不能直接传入CSS选择器字符串,否则触发InvalidArgumentException。
  2. 缺少等待机制:页面加载需要时间,直接调用find_element()可能在元素未渲染完成时执行,导致元素查找失败。

三、修正后的Selenium代码

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

def stock_price(symbol: str = "AAPL") -> str:
    driver = webdriver.Chrome()
    url = f"https://digital.fidelity.com/prgw/digital/research/quote/dashboard/summary?symbol={symbol}"
    driver.get(url)
    
    # 等待元素加载完成,最长等待10秒
    current_price = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "div.nre-quick-quote-price"))
    ).text
    
    driver.quit()  # 关闭浏览器进程
    return current_price

# 测试调用
print(f"AAPL 当前价格: {stock_price('AAPL')}")

四、补充说明

  • 动态页面场景下,Selenium是最直接的解决方案;若想避免使用浏览器驱动,可尝试查找Fidelity官方开放的API(需注意权限限制)。
  • 频繁抓取可能触发网站反爬机制,建议添加合理的请求间隔。

内容的提问来源于stack exchange,提问作者Beginner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 22:05:09