在本教程中,你将学习如何通过 Infoway API 获取港股实时行情数据,具体以腾讯控股(0700.HK)和汇丰控股(0005.HK)为例,使用 Python 进行数据请求和解析。
教程目标
你将学会:
- 如何构建请求港股行情的 API URL
- 如何设置请求头(Headers)
- 如何使用
requests
获取数据 - 如何解析返回结果
步骤一:准备工作
1. 安装依赖
确保你的开发环境中已经安装了 requests
模块:
pip install requests
2. 获取 API Key
在Infoway API官网注册账号,获取你的 API Key。
步骤二:构建 API 请求
批量 K 线接口支持多支股票一次性查询,格式如下:
https://data.infoway.io/stock/batch_kline/{klineType}/{klineNum}/{codes}
字段说明
klineType
是K线的周期,传入不同的值可以获取对应周期的K线:
1:1分钟k;
2:5分钟k;
3:15分钟k;
4:30分钟k;
5:1小时k;
6:2小时k;
7:4小时k;
8:日k;
9:周k;
10:月k;
11:季k;
12:年k
klineNum
是需要的K线数量,单产品最大可以获取最近500根K线;如果是批量查询,每个产品最大返回2跟K线。
codes
是股票代码。
步骤三:编写请求代码
我们以港股腾讯和汇丰为例,获取一分钟K线:
import requests
# 构建API URL
api_url = 'https://data.infoway.io/stock/batch_kline/1/2/0700.HK%2C0005.HK'
# 设置请求头(必须包含API Key)
headers = {
'User-Agent': 'Mozilla/5.0',
'Accept': 'application/json',
'apiKey': 'yourApikey' # 在www.infoway.io申请密钥
}
# 发送GET请求
response = requests.get(api_url, headers=headers)
# 输出结果
print(f"HTTP code: {response.status_code}")
print(f"message: {response.text}")
步骤四:解析返回数据
返回数据为标准 JSON 格式,包含每支股票对应的 K 线数组,结构如下:
{
"code": 0,
"data": {
"0700.HK": [
{
"date": "2025-06-25",
"open": 390.0,
"close": 398.6,
"high": 400.2,
"low": 388.1,
"volume": 12034500
},
...
],
"0005.HK": [
{
"date": "2025-06-25",
"open": 62.0,
"close": 63.2,
"high": 63.8,
"low": 61.5,
"volume": 8100000
},
...
]
}
}
步骤五:查询股票的基础信息
我们也可以查询每只股票的基本信息,包括名称、交易所、币种、股数等数据,代码如下:
import requests
# API 端点:查询股票基础信息
api_url = 'https://data.infoway.io/common/basic/symbols/info'
# 请求参数:查询腾讯和汇丰
params = {
'symbols': '0700.HK,0005.HK' # 用英文逗号分隔
}
# 设置请求头
headers = {
'User-Agent': 'Mozilla/5.0',
'Accept': 'application/json',
'apiKey': 'yourApikey' # 在www.infoway.io申请密钥
}
# 发送 GET 请求
response = requests.get(api_url, headers=headers, params=params)
# 打印 HTTP 响应状态码和内容
print(f"HTTP code: {response.status_code}")
print("Response JSON:")
print(response.json())
返回示例
{
"ret": 200,
"msg": "success",
"traceId": "a1b2c3d4-5678-90ef-ghij-klmnopqrstuv",
"data": [
{
"symbol": "0700.HK",
"market": "HK",
"name_cn": "腾讯控股",
"name_en": "Tencent Holdings Ltd",
"name_hk": "騰訊控股",
"exchange": "HKEX",
"currency": "HKD",
"lot_size": 100,
"total_shares": 9600000000,
"circulating_shares": 4800000000,
"hk_shares": 0,
"eps": "10.530",
"eps_ttm": "10.750",
"bps": "28.123",
"dividend_yield": "0.30",
"stock_derivatives": "",
"board": "MainBoard"
},
{
"symbol": "0005.HK",
"market": "HK",
"name_cn": "汇丰控股",
"name_en": "HSBC Holdings plc",
"name_hk": "滙豐控股",
"exchange": "HKEX",
"currency": "HKD",
"lot_size": 100,
"total_shares": 60000000000,
"circulating_shares": 45000000000,
"hk_shares": 0,
"eps": "1.250",
"eps_ttm": "1.300",
"bps": "6.780",
"dividend_yield": "4.50",
"stock_derivatives": "",
"board": "MainBoard"
}
]
}