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

网页抓取Yahoo Finance时获取到过时股票数据的问题排查

问题

想抓取Yahoo Finance上的股票价格和涨跌幅,写了一段程序:先通过Google搜索目标股票的Yahoo Finance链接,再提取网页数据。但获取的数据有数分钟延迟,程序能显示价格、涨跌幅及最后更新时间,作为编程新手搞不懂为啥拿不到实时数据,也没找到解决方案。代码如下:

from googlesearch import search
import requests
from bs4 import BeautifulSoup

def get_data(stock):
   # Search for the yahoo finance website on Google
    url = ""
    for results in search(f"yahoo finance {stock} stock", tld='com', num=10, stop=10, pause=2):
        page = results.split('.')
        if page[1] == "yahoo":
           url = results
           break

    # Extract data
    r = requests.get(url)
    soup = BeautifulSoup(r.text, 'html.parser')
    change = soup.find('div', {'class': 'D(ib) Mend(20px)'}).text 

    return change


print(get_data("apple"))
原因及解决方案

核心原因

  1. 网页版数据本身有延迟:Yahoo Finance免费网页端展示的股票数据默认有15分钟左右的延迟,这是平台限制,不是爬取代码的问题。
  2. 静态爬取的局限性:用requests获取的是页面静态HTML,这些内容是缓存后的结果,更新频率远低于实时数据的更新速度。
  3. 链接获取方式低效:通过Google搜索找Yahoo链接既慢又不稳定,直接用股票代码构造链接更可靠。

改进方案:用Yahoo Finance第三方API(yfinance)

免费版最适合新手的方式是用yfinance库,它封装了Yahoo的官方接口,数据更新更及时,操作也简单。

步骤1:安装库

pip install yfinance

步骤2:示例代码

import yfinance as yf

def get_stock_data(ticker):
    # 初始化股票对象
    stock = yf.Ticker(ticker)
    # 获取最新的市场数据(包含盘前盘后)
    latest_data = stock.history(period='1m', prepost=True)
    current_price = latest_data['Close'].iloc[-1]
    
    # 获取前收盘价计算涨跌幅
    prev_close = stock.info.get('previousClose', current_price)
    change_percent = ((current_price - prev_close) / prev_close) * 100
    
    return f"当前价格: {current_price:.2f} | 涨跌幅: {change_percent:.2f}%"

# 使用股票代码(苹果是AAPL,不是apple)
print(get_stock_data("AAPL"))

原代码优化建议(如果坚持爬网页)

如果你一定要用网页爬取,至少把链接获取方式改成直接构造:

def get_data(ticker):
    # 直接构造Yahoo Finance链接,用股票代码
    url = f"https://finance.yahoo.com/quote/{ticker}"
    r = requests.get(url)
    soup = BeautifulSoup(r.text, 'html.parser')
    # 注意:页面类名可能会变,需要定期检查
    change = soup.find('div', {'class': 'D(ib) Mend(20px)'}).text 
    return change

print(get_data("AAPL"))

但即使这样,还是解决不了网页数据延迟的问题,因为平台本身就限制了免费网页的实时性。

内容的提问来源于stack exchange,提问作者Oscar Rydén

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:08:14