币安(Binance)作为全球领先的加密货币交易所,提供了丰富的API接口,允许开发者获取实时市场数据、交易信息等,本文将详细介绍如何使用Python通过币安API获取数据,涵盖环境准备、请求方法及数据处理技巧。
首先需要安装必要的Python库,requests是处理HTTP请求的核心工具,python-binance是官方推荐的SDK,可简化操作,通过以下命令安装:
pip install requests python-binance
若需访问私有API(如账户信息),需在币安后台创建API并获取API Key和Secret,建议将密钥存储为环境变量而非直接写在代码中,

import os from binance.client import Client api_key = os.getenv('BINANCE_API_KEY') api_secret = os.getenv('BINANCE_API_SECRET') client = Client(api_key, api_secret)
币安公共API无需认证即可访问,例如获取BTC/USDT的24小时价格统计:
import requests url = "https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT" response = requests.get(url) data = response.json() print(f"当前价格: {data['lastPrice']}, 24h成交量: {data['volume']}")
通过调整symbol参数可查询其他交易对,/api/v3/klines端点则可获取K线数据,支持自定义时间间隔(如1m、5h、1d等)。
私有API请求需添加签名认证,以下示例获取账户资产:
from binance.enums import * account = client.get_account() for balance in account['balances']: if float(balance['free']) > 0: print(f"{balance['asset']}: 可用 {balance['free']}")
实际开发中需注意异常处理,如网络错误、API限流(币安公共API限制1200次/分钟)等,可通过try-except捕获异常:
try: ticker = client.get_symbol_ticker(symbol="ETHUSDT") except BinanceAPIException as e: print(f"API错误: {e}")
建议将高频数据获取任务放入异步框架(如aiohttp),避免阻塞主线程,对于大量数据,可结合pandas进行清洗和分析,例如将K线数据转换为Data :
import pandas as pd klines = client.get_klines(symbol="BTCUSDT", interval=Client.KLINE_INTERVAL_1DAY, limit=100) df = pd.Data (klines, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume', 'close_time', 'quote_volume', 'count', 'taker_buy_volume', 'taker_buy_quote_volume', 'ignore']) df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
通过以上方法,开发者可高效获取并处理币安API数据,构建量化交易、市场监控等应用,实际使用时需遵守币安API规则,避免触发限流或封禁风险。