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

如何扩展BeautifulSoup代码获取Investing.com股票全量概览数据

解决Investing.com英伟达股票指标重复获取问题

问题根源

你循环里用soup.find('span', ...)会从整个HTML文档中匹配第一个符合条件的元素,所以每次输出的都是第一个指标(Prev. Close)的数值。正确做法是在当前遍历的element范围内查找对应数值。

修正后的代码

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
from bs4 import BeautifulSoup
import pandas as pd

# 初始化浏览器,替换为你的ChromeDriver路径
driver = webdriver.Chrome("你的ChromeDriver路径")
driver.get("https://www.investing.com/equities/nvidia-corp")

# 等待关键元素加载完成,避免动态加载导致获取不到数据
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CLASS_NAME, "key-info_dd-numeric__2cYjc"))
)

content = driver.page_source
soup = BeautifulSoup(content, features="html.parser")

# 存储指标数据的字典
nvidia_data = {}

# 遍历每个指标容器
for element in soup.find_all('div', attrs={'class': 'flex justify-between border-b py-2 desktop:py-0.5'}):
    # 在当前element内查找指标名称和数值
    label = element.find('span', class_='key-info_dd-label__3n5GT').text.strip()
    value = element.find('span', class_='key-info_dd-numeric__2cYjc').text.strip()
    nvidia_data[label] = value

# 打印所有指标
for key, val in nvidia_data.items():
    print(f"{key}: {val}")

# 转成DataFrame方便后续处理
df = pd.DataFrame(nvidia_data.items(), columns=['指标', '数值'])
print(df)

driver.quit()

代码说明

  • 等待加载:加入WebDriverWait确保页面动态加载完成,避免因元素未渲染导致的空值问题
  • 范围查找:用element.find()替代soup.find(),限定在当前遍历的指标容器内查找数据
  • 数据存储:用字典存储指标名称和对应数值,方便后续整理成表格或其他格式

额外提示

如果部分指标(比如Revenue)不在当前容器里,可以检查对应的HTML结构,调整find_all的目标元素类名,重复上述逻辑即可获取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:54:33