跳转至

Aktools

AKTools 的介绍

AKTools 是一款用于快速搭建基于 AKShare 开源财经数据接口库的 HTTP API 的工具,通过 AKTools 可以用一行命令来启动 HTTP 服务,从而让原本专属服务于 Python 用户的开源财经数据接口库 AKShare 的使用 突破编程语言的限制。无论您使用的是 C/C++、Java、Go、Rust、Ruby、PHP、Rust、R、JavaScript 等编程语言都可以快速、轻松获取财经数据,助力您更好地展开数据科学工作。

AKTools 中文文档

AKShare 的介绍

AKShare 是目前在开源财经数据接口库里面使用较广的 Python 库,目前已经累计下载量达到 4,000,000 + 次,从 发布至今一直由广大数据科学爱好者积极维护中,其提供的内容详实且丰富的 AKShare 文档 大大提高了数据查找和使用的效率。

FastAPI 的介绍

FastAPI 作为 Python 世界最受欢迎的异步 Web 框架,正受到越来越多的数据科学家、后端程序员的喜爱。本次 AKTools 将 AKShare 和 FastAPI 强强联合,用于构建快速且高效的 HTTP API 工具。

快速安装

安装要求

由于 AKTools 是基于 AKShare 和 FastAPI 的,所以 AKTools 要求您的 Python 版本高于 Python 3.7(64 位) 且您的操作系统必须是 64 位的操作系统,详细要求以 AKShare 安装指导 的安装要求为准。

一键安装

pip install aktools  # 安装的版本需大于 0.0.81

如上述方法不能升级到最新版,请参照如下方法升级:

pip install aktools --upgrade -i https://pypi.org/simple  # 安装的版本需大于 0.0.81

查看版本

import aktools as at

print(at.__version__)

快速启动

本次对 AKTools 进行大量的升级和简化工作,使得用户可以通过一行命令,快速高效的搭建 HTTP API 接口 来提高工作效率。

通过命令行启动

在已经安装并测试成功的 Python 环境中打开命令行工具,如果 Windows 的 cmd 命令行工具,您只需要输入: python -m aktools 即可快速启动一个本地的 HTTP Server。

在您的控制台显示如上图信息时,您可以打开您的游览器,以 Chrome 游览器为例,您只需要在地址栏输入:http://127.0.0.1:8080/api/public/stock_zh_a_hist 即可快速获取数据。

指定参数设置

您可以指定 HTTP Server 的主机和端口号:python -m aktools --host 0.0.0.0 --port 8888 即可通过 --host 和 --port 设置主机和端口。

在您的控制台显示如上图信息时,您可以打开 Postman 为例,您只需要在请求栏输入:http://0.0.0.0:8888/api/public/stock_zh_a_daily 即可快速获取数据。

使用案例

无参数接口

对于不带参数的接口,比如 ak.stock_comment_em() 来获取 东方财富网-数据中心-特色数据-千股千评 的数据,则只需要访问: http://127.0.0.1:8080/api/public/stock_comment_em 地址即可访问到数据。

带参数接口

对于带参数的接口,此处分为两种情况。此处以 ak.stock_zh_a_hist() 接口为例,如果直接访问:http://127.0.0.1:8080/api/public/stock_zh_a_hist 则可以获取带默认参数的数据,如果需要为该接口指定参数,比如获取 symbol="600000" 的股票,则只需要访问:http://127.0.0.1:8080/api/public/stock_zh_a_hist?symbol=600000 即可。 注意此处的 ?symbol=600000 中都不带 " 号,如果需要同时指定多个参数,则只需要访问:http://127.0.0.1:8080/api/public/stock_zh_a_hist?symbol=600000&period=weekly 即可。

语言调用案例

R 语言调用

代码

library(RCurl)  # 需要先安装该包
library(jsonlite)  # 需要先安装该包
options (warn = -1)  # 该行有助于在无参数请求时去掉 warning 信息

temp_df <-
  getForm(
    uri = 'http://127.0.0.1:8080/api/public/stock_zh_a_hist',
    symbol = '000001',
    period = 'daily',
    start_date = '20211109',
    end_date = '20211209',
    adjust = 'hfq',
    .encoding = "utf-8"
  )
inner_df <- fromJSON(temp_df)
inner_df

结果展示

         日期    开盘    收盘    最高    最低      成交量     成交额    振幅  涨跌幅  涨跌额 换手率
1  2021-11-09 3009.83 3017.96 3037.46 2974.07 1240573 2163193120 2.11   0.60  17.88   0.64
2  2021-11-10 3006.58 2996.83 3008.20 2957.82 1220851 2109735152 1.67  -0.70 -21.13   0.63
3  2021-11-11 2988.70 3151.23 3164.23 2983.82 2084729 3752413856 6.02   5.15 154.40   1.07
4  2021-11-12 3144.73 3138.23 3196.74 3112.22  957546 1753072720 2.68  -0.41 -13.00   0.49
5  2021-11-15 3151.23 3164.23 3196.74 3126.85  655090 1203764096 2.23   0.83  26.00   0.34
6  2021-11-16 3152.85 3130.10 3182.11 3121.97  601110 1099113408 1.90  -1.08 -34.13   0.31
7  2021-11-17 3118.72 3112.22 3143.10 3091.09  664640 1203859184 1.66  -0.57 -17.88   0.34
8  2021-11-18 3108.97 3061.84 3113.85 3050.46  799844 1430058304 2.04  -1.62 -50.38   0.41
9  2021-11-19 3061.84 3118.72 3133.35 3045.58  786372 1414506384 2.87   1.86  56.88   0.41
10 2021-11-22 3099.22 3113.85 3134.97 3078.09  738618 1337768176 1.82  -0.16  -4.87   0.38
11 2021-11-23 3112.22 3074.84 3151.23 3042.33 1235978 2213817584 3.50  -1.25 -39.01   0.64
12 2021-11-24 3056.96 3073.21 3086.22 3039.08  741311 1316774400 1.53  -0.05  -1.63   0.38
13 2021-11-25 3052.09 3042.33 3060.21 3034.21  603533 1068221312 0.85  -1.00 -30.88   0.31
14 2021-11-26 3032.58 3026.08 3040.71 3016.33  694500 1219937312 0.80  -0.53 -16.25   0.36
15 2021-11-29 2998.45 3014.70 3024.46 2990.33  512595  895105984 1.13  -0.38 -11.38   0.26
16 2021-11-30 3019.58 3003.33 3042.33 2988.70  733616 1280384560 1.78  -0.38 -11.37   0.38
17 2021-12-01 3001.70 3035.83 3056.96 2991.95  706925 1243666848 2.16   1.08  32.50   0.36
18 2021-12-02 3032.58 3027.71 3063.46 2991.95  994798 1749164560 2.36  -0.27  -8.12   0.51
19 2021-12-03 3035.83 3037.46 3045.58 2998.45  707600 1242375056 1.56   0.32   9.75   0.36
20 2021-12-06 3069.96 3110.60 3185.36 3061.84 2145625 3896385168 4.07   2.41  73.14   1.11
21 2021-12-07 3143.10 3169.11 3203.24 3118.72 1616444 2979968976 2.72   1.88  58.51   0.83
22 2021-12-08 3167.48 3170.73 3183.73 3120.35  980281 1798691056 2.00   0.05   1.62   0.51
23 2021-12-09 3173.98 3208.11 3266.62 3154.48 1455887 2726663440 3.54   1.18  37.38   0.75

MATLAB 调用

代码

api = 'http://127.0.0.1:8080/api/public/';
url = [api 'stock_zh_a_hist'];
options = weboptions('ContentType','json', 'CharacterEncoding', 'utf-8');
data = webread(url, options, symbol = '000001', period = 'daily', start_date = '20211109', end_date = '20211209', adjust = 'hfq');
data % 由于 MATLAB 无法显示中文字段名,请自行修改为英文字段,参考链接:http://iso2mesh.sourceforge.net/cgi-bin/index.cgi?jsonlab/Doc/Examples

结果

'2021-11-09'    3009.83000000000    3017.96000000000    3037.46000000000    2974.07000000000    1240573 2163193120.00000    2.11000000000000    0.600000000000000   17.8800000000000    0.640000000000000
'2021-11-10'    3006.58000000000    2996.83000000000    3008.20000000000    2957.82000000000    1220851 2109735152.00000    1.67000000000000    -0.700000000000000  -21.1300000000000   0.630000000000000
'2021-11-11'    2988.70000000000    3151.23000000000    3164.23000000000    2983.82000000000    2084729 3752413856.00000    6.02000000000000    5.15000000000000    154.400000000000    1.07000000000000
'2021-11-12'    3144.73000000000    3138.23000000000    3196.74000000000    3112.22000000000    957546  1753072720.00000    2.68000000000000    -0.410000000000000  -13 0.490000000000000
'2021-11-15'    3151.23000000000    3164.23000000000    3196.74000000000    3126.85000000000    655090  1203764096.00000    2.23000000000000    0.830000000000000   26  0.340000000000000
'2021-11-16'    3152.85000000000    3130.10000000000    3182.11000000000    3121.97000000000    601110  1099113408.00000    1.90000000000000    -1.08000000000000   -34.1300000000000   0.310000000000000
'2021-11-17'    3118.72000000000    3112.22000000000    3143.10000000000    3091.09000000000    664640  1203859184.00000    1.66000000000000    -0.570000000000000  -17.8800000000000   0.340000000000000
'2021-11-18'    3108.97000000000    3061.84000000000    3113.85000000000    3050.46000000000    799844  1430058304.00000    2.04000000000000    -1.62000000000000   -50.3800000000000   0.410000000000000
'2021-11-19'    3061.84000000000    3118.72000000000    3133.35000000000    3045.58000000000    786372  1414506384.00000    2.87000000000000    1.86000000000000    56.8800000000000    0.410000000000000
'2021-11-22'    3099.22000000000    3113.85000000000    3134.97000000000    3078.09000000000    738618  1337768176.00000    1.82000000000000    -0.160000000000000  -4.87000000000000   0.380000000000000
'2021-11-23'    3112.22000000000    3074.84000000000    3151.23000000000    3042.33000000000    1235978 2213817584.00000    3.50000000000000    -1.25000000000000   -39.0100000000000   0.640000000000000
'2021-11-24'    3056.96000000000    3073.21000000000    3086.22000000000    3039.08000000000    741311  1316774400.00000    1.53000000000000    -0.0500000000000000 -1.63000000000000   0.380000000000000
'2021-11-25'    3052.09000000000    3042.33000000000    3060.21000000000    3034.21000000000    603533  1068221312.00000    0.850000000000000   -1  -30.8800000000000   0.310000000000000
'2021-11-26'    3032.58000000000    3026.08000000000    3040.71000000000    3016.33000000000    694500  1219937312.00000    0.800000000000000   -0.530000000000000  -16.2500000000000   0.360000000000000
'2021-11-29'    2998.45000000000    3014.70000000000    3024.46000000000    2990.33000000000    512595  895105984   1.13000000000000    -0.380000000000000  -11.3800000000000   0.260000000000000
'2021-11-30'    3019.58000000000    3003.33000000000    3042.33000000000    2988.70000000000    733616  1280384560.00000    1.78000000000000    -0.380000000000000  -11.3700000000000   0.380000000000000
'2021-12-01'    3001.70000000000    3035.83000000000    3056.96000000000    2991.95000000000    706925  1243666848.00000    2.16000000000000    1.08000000000000    32.5000000000000    0.360000000000000
'2021-12-02'    3032.58000000000    3027.71000000000    3063.46000000000    2991.95000000000    994798  1749164560.00000    2.36000000000000    -0.270000000000000  -8.12000000000000   0.510000000000000
'2021-12-03'    3035.83000000000    3037.46000000000    3045.58000000000    2998.45000000000    707600  1242375056.00000    1.56000000000000    0.320000000000000   9.75000000000000    0.360000000000000
'2021-12-06'    3069.96000000000    3110.60000000000    3185.36000000000    3061.84000000000    2145625 3896385168.00000    4.07000000000000    2.41000000000000    73.1400000000000    1.11000000000000
'2021-12-07'    3143.10000000000    3169.11000000000    3203.24000000000    3118.72000000000    1616444 2979968976.00000    2.72000000000000    1.88000000000000    58.5100000000000    0.830000000000000
'2021-12-08'    3167.48000000000    3170.73000000000    3183.73000000000    3120.35000000000    980281  1798691056.00000    2   0.0500000000000000  1.62000000000000    0.510000000000000
'2021-12-09'    3173.98000000000    3208.11000000000    3266.62000000000    3154.48000000000    1455887 2726663440.00000    3.54000000000000    1.18000000000000    37.3800000000000    0.750000000000000

AKTools-Docker 版本

下载镜像

# docker pull registry.cn-shanghai.aliyuncs.com/akfamily/aktools:[AKShare 的版本号]
docker pull registry.cn-shanghai.aliyuncs.com/akfamily/aktools:1.8.95

启动镜像

高性能模式

高性能模式为镜像启动后的默认模式,其主要是启动 Gunicorn 作为 WSGI 服务器,提高网络处理的性能,更多资料请参考

常规方式运行:

docker run -p 8080:8080 registry.cn-shanghai.aliyuncs.com/akfamily/aktools:1.8.95

后台运行:

docker run -d -p 8080:8080 registry.cn-shanghai.aliyuncs.com/akfamily/aktools:1.8.95

普通模式

常规方式运行:

docker run -p 8080:8080 registry.cn-shanghai.aliyuncs.com/akfamily/aktools:1.8.95 python -m aktools --host 0.0.0.0 --port 8080

后台运行:

docker run -d -p 8080:8080 registry.cn-shanghai.aliyuncs.com/akfamily/aktools:1.8.95 python -m aktools --host 0.0.0.0 --port 8080

本次访问

http://127.0.0.1:8080/api/public/stock_zh_a_hist

升级镜像

目前通过 docker pull registry.cn-shanghai.aliyuncs.com/akfamily/aktools:[AKShare 的版本号] 拉取的镜像已经默认安装最新的 AKShare [AKShare 的版本号] 版本,以下步骤仅供参考:

  1. 重新打镜像标签:docker tag registry.cn-shanghai.aliyuncs.com/akfamily/aktools:1.8.95 ak_tools:1.8.95
  2. 启动镜像并进入命令行模型:docker run -it ak_tools:1.8.95 /bin/bash
  3. 升级 AKShare 到最新版:pip install akshare --upgrade -i https://pypi.org/simple
  4. 退出镜像:exit
  5. 找到容器 ID:docker ps -a
  6. 提交修改:docker commit -m "update akshare to latest" a07c8632637f ak_tools:1.8.96 其中 a07c8632637f 为第 5 步骤中的容器 ID,ak_tools:1.8.96 为新镜像的名字和版本
  7. 利用构建好的新镜像启动新容器:docker run -p 8080:8080 ak_tools:1.3.96

本地构造镜像及使用

可以通过 Dockerfile 文件进行本地镜像的构造,通过下载仓库中:https://github.com/akfamily/aktools/blob/main/Dockerfile 文件到本地后,通过 docker build -t aktools:v1 . 命令来构建镜像,并通过 docker run -p 8080:8080 aktools:v1 来启动镜像,如需要后台运行则通过 docker run -d -p 8080:8080 aktools:v1 来进行启动。最后通过访问 http://127.0.0.1:8080/api/public/stock_zh_a_hist 进行测试,如果可以获取到数据则本地镜像构建及使用成功!