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

从雅虎财经提取股票代码及公司名称的技术实现咨询

雅虎财经股票代码与对应上市公司名称稳定提取方案

你原有代码硬编码表格索引Source{2}[Data]的写法稳定性极差:雅虎财经会不定期调整页面表格排序、前端渲染结构,固定索引取值很容易抓到无关内容甚至直接报错,且上市公司全称并不存放在你当前抓取的报价表格内,而是位于页面头部带固定标识的标题元素中。

核心实现逻辑

  • 放弃硬编码表格索引的写法,通过页面元素的固定Id/属性定位目标内容,抗页面结构微调能力更强
  • 股票代码可直接从请求URL提取,也可匹配标题节点内的代码字段做二次校验
  • 上市公司名称从页面h1标题节点解析,该节点标识长期稳定,不会随表格内容调整变动
  • 补充请求头配置,绕过雅虎财经默认的反爬拦截

可直接复用的Power Query M代码

let
    // 单只股票查询时直接替换下方Ticker值即可,批量查询可改为参数传入
    TargetTicker = "MSFT",
    Source = Web.Contents(
        "https://finance.yahoo.com/quote/" & TargetTicker & "/", 
        [Headers=[User-Agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"]]
    ),
    PageContent = Web.Page(Source),
    // 定位报价页头部标题区块,不依赖固定表格序号
    HeaderBlock = List.Select(PageContent, each _[Id] = "Lead-3-QuoteHeader-Proxy"){0}[Data],
    HeaderText = HeaderBlock{0}[Children]{0}[Children]{1}[Text],
    // 拆分标题文本,分别提取公司名称和股票代码
    CompanyName = Text.Trim(Text.BeforeDelimiter(HeaderText, " (")),
    Ticker = Text.BetweenDelimiters(HeaderText, "(", ")"),
    Output = #table(type table [股票代码 = text, 上市公司名称 = text], {{Ticker, CompanyName}})
in
    Output

使用说明

  • 代码返回标准两列结构化表,分别对应股票代码、上市公司全称,单只股票查询直接替换TargetTicker的值即可
  • 批量查询场景下,可将TargetTicker替换为股票代码列表,通过List.Transform遍历请求后合并结果,注意控制请求频率避免被临时封禁
  • 若后续雅虎调整头部区块Id,只需修改List.Select匹配的Id值即可快速修复,维护成本远低于硬编码表格索引的写法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.11 16:16:23