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

如何修改Python脚本提取CNN恐惧与贪婪指数历史图表数据?

解决CNN恐惧与贪婪指数历史数据提取问题

问题分析

原脚本失效的核心原因是网页结构已更新,不再使用Highcharts渲染图表,目标数据现在嵌入在页面的window.__INITIAL_STATE__全局对象中,而非原代码预期的Highcharts相关script标签。

修改后的代码方案

import requests
import json
from bs4 import BeautifulSoup

url = 'https://www.cnn.com/markets/fear-and-greed'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# 定位包含全局状态数据的script标签
script_tag = soup.find('script', string=lambda t: t and 'window.__INITIAL_STATE__' in t)

# 提取并解析JSON数据
raw_data = script_tag.string.split('window.__INITIAL_STATE__ = ')[1].split(';')[0]
state_data = json.loads(raw_data)

# 提取恐惧与贪婪指数的历史数据点
fear_greed_history = state_data['fearGreed']['historical']

# 整理成日期-指数值的结构化列表
formatted_data = [{"date": item['date'], "value": item['value']} for item in fear_greed_history]

# 打印结果(可根据需求保存为CSV/Excel等格式)
for entry in formatted_data:
    print(f"日期: {entry['date']}, 恐惧贪婪指数: {entry['value']}")

代码说明

  • 定位数据载体:通过匹配window.__INITIAL_STATE__关键字找到存储所有页面初始化数据的script标签,这是当前页面数据的核心来源。
  • 解析JSON结构:从script内容中剥离出JSON字符串并解析为Python字典,方便后续提取目标字段。
  • 提取目标数据:在解析后的字典中,fearGreed.historical路径下直接存储了所有历史数据点,包含日期和对应指数值。
  • 结构化输出:将原始数据整理为易读的键值对格式,可直接用于后续EPS预测模型的数据分析,也可通过pandas库导出为CSV文件(需额外安装pandas)。

扩展建议

如果需要定期获取数据,可添加:

  • 请求头伪装(如添加User-Agent),避免被网站反爬机制拦截
  • 定时任务逻辑(如使用schedule库)实现自动数据采集
  • 数据持久化逻辑,将结果写入数据库或本地文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 02:15:03