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

使用BeautifulSoup提取Yahoo Finance日期仅得时间及文本消失问题求助

解决Yahoo Finance日期提取不全及Soup文本消失问题

我帮你梳理下问题根源和解决方案:你现在遇到的两个问题,本质是Yahoo的反爬拦截和页面元素结构变更导致的,咱们一步步来解决:

问题原因拆解

  1. 反爬拦截:直接用requests.get()不带请求头,很容易被Yahoo识别为机器人,返回的HTML内容会缺失关键数据,这就是你说的"soup生成后文本消失"的核心原因。
  2. 元素定位失效:Yahoo Finance的页面元素类名、ID经常会调整,你原来定位日期的quote-market-notice元素,现在已经不再包含完整的日期时间信息了。

具体解决方案

1. 添加请求头模拟浏览器访问

给请求带上User-Agent,让服务器认为你是正常的浏览器用户,避免被拦截。

2. 重新定位日期时间元素

现在Yahoo的完整日期时间信息,藏在quote-market-notice下的子span标签里,需要调整选择器来精准定位。

修改后的完整代码

import requests
from bs4 import BeautifulSoup

technicals = {}
ticker = "INFY.NS"

try:
    url = f"https://finance.yahoo.com/quote/{ticker}/key-statistics?p={ticker}"
    # 添加请求头模拟浏览器,避免被反爬拦截
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
    }
    r = requests.get(url, headers=headers)
    
    # 先检查请求是否成功
    if r.status_code != 200:
        print(f"请求失败,状态码:{r.status_code}")
        exit()
    
    soup = BeautifulSoup(r.text, 'lxml')
    
    # 提取当前价格(CMP)
    cmp_element = soup.find('span', class_="Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)")
    if cmp_element:
        technicals["CMP"] = cmp_element.text.strip()
        print(f"当前价格:{technicals['CMP']}")
    else:
        print("未找到当前价格元素")
    
    # 提取完整的日期时间
    market_notice = soup.find('div', id='quote-market-notice')
    if market_notice:
        # 定位包含完整日期时间的子span
        datetime_element = market_notice.find('span', class_="C($tertiaryColor) Fz(12px)")
        if datetime_element:
            full_datetime = datetime_element.text.strip()
            print(f"完整日期时间:{full_datetime}")
        else:
            print("未找到日期时间元素")
    else:
        print("未找到市场通知模块")

except Exception as e:
    print(f"程序出错:{str(e)}")

额外提示

如果之后Yahoo又调整了页面结构,你可以用浏览器开发者工具(F12)重新定位元素:右键点击日期时间文本,选择"检查",查看最新的HTML标签和类名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 00:32:32