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

如何提取Coinmarketcap历史页面__NEXT_DATA__中2021年9月5日BTC行情数据

解决方案

直接通过定位__NEXT_DATA__标签、解析JSON结构即可拿到目标数据,完整可运行代码如下:

import json
import requests
from bs4 import BeautifulSoup

# 发起页面请求
response = requests.get('https://coinmarketcap.com/historical/20210905/')
soup = BeautifulSoup(response.text, 'lxml')

# 提取页面内嵌的JSON数据
next_data_script = soup.find('script', id='__NEXT_DATA__')
json_data = json.loads(next_data_script.string)

# 定位到历史币种列表
coin_list = json_data['props']['pageProps']['listingHistorical']['data']

# 筛选BTC的对应数据
btc_info = next(coin for coin in coin_list if coin['symbol'] == 'BTC')

# 提取所需字段
circulating_supply = btc_info['circulating_supply']
btc_usd_price = btc_info['quote']['USD']['price']
btc_usd_market_cap = btc_info['quote']['USD']['market_cap']

# 输出结果
print(f"流通供应量:{circulating_supply} BTC")
print(f"价格:${round(btc_usd_price, 2)}")
print(f"市值:${round(btc_usd_market_cap, 2)}")

逻辑说明

  • 用find方法匹配id为__NEXT_DATA__的script标签,取.string属性即可拿到标签内的纯JSON文本,之前提取失败大概率是没有正确获取标签内的文本内容就直接解析
  • 转换为Python字典后,按层级props→pageProps→listingHistorical→data就能拿到当天所有币种的全量数据
  • 遍历列表筛选出symbol为BTC的条目后,直接按结构取对应字段即可,USD计价的价格和市值都在quote→USD节点下

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:54:01