You need to enable JavaScript to run this app. 如何用Python从雅虎财经抓取Sustainalytics提供的历史ESG数据
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python从雅虎财经抓取Sustainalytics提供的历史ESG数据

方案核心前提说明

首先明确你遇到问题的根本原因:现有代码调用的yfinance.Ticker.sustainability方法,底层仅对接雅虎财经前端展示的当期最新Sustainalytics ESG评分,本身没有支持传入历史时间范围的参数通道,不管怎么调整遍历逻辑,都只能拿到最新时点的数值,无法回溯2010-2020年的历史评分。雅虎未对普通访问者开放Sustainalytics历史数据的现成SDK接口,需要通过适配前端历史数据的加载逻辑实现抓取,而非依赖原有sustainability属性的能力。

可落地实现流程

1. 抓取逻辑替换

放弃原有仅能获取最新值的sustainability调用逻辑,直接在请求中传入2010-01-01至2020-12-31的时间范围参数,对应抓取该区间内的Sustainalytics历史评分序列。

  • 优先匹配月度粒度要求:如果请求返回的原始数据频率高于月度,自动提取每个自然月最后一个交易日的评分值,对齐月度统计要求
  • 适配次选粒度要求:如果原始接口仅支持年度粒度,自动提取每年12月末的评分值,满足年度维度的分析需求

2. 批量抓取框架改造

基于你已有的标普500成分股遍历框架做针对性修改:

  • 替换原来的DataFrame.append()写法(该方法在pandas 2.0+版本已被移除,会直接触发运行报错),改用列表收集每个标的的返回数据,最后统一拼接成完整数据集,避免报错同时提升批量处理速度
  • 增加基础反爬适配:每个标的的请求间隔设置为0.5-1秒,避免触发雅虎的访问频率限制
  • 完善异常捕获逻辑:遇到无有效ESG历史数据的标的、接口返回空值的情况,直接跳过当前标的,不中断整体抓取流程
  • 修正现有代码的语法错误:原单标的代码中str(msft_y ticker)漏写了点号,正确写法为str(msft_y.ticker)

3. 数据自动落盘

抓取流程完成后,将整合后的数据集直接保存为本地文件:

  • 默认导出为csv格式,使用DataFrame.to_csv()方法指定保存路径即可
  • 若需要txt格式,可通过修改导出参数,设置为制表符分隔的文本文件;导出字段包含股票代码、对应统计周期、ESG总评分、环境分项评分、社会分项评分、治理分项评分、对应风险评级,完全匹配后续构建ESG多空组合、做历史周期股价回测的字段需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 17:27:08