使用 Python 获取实时港股行情数据

在本教程中,你将学习如何通过 Infoway API 获取港股实时行情数据,具体以腾讯控股(0700.HK)和汇丰控股(0005.HK)为例,使用 Python 进行数据请求和解析。

教程目标

你将学会:

  1. 如何构建请求港股行情的 API URL
  2. 如何设置请求头(Headers)
  3. 如何使用 requests 获取数据
  4. 如何解析返回结果

步骤一:准备工作

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线:

11分钟k;
25分钟k;
315分钟k;
430分钟k;
51小时k;
62小时k;
74小时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"
    }
  ]
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!