跳转至

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 框架,正受到越来越多的数据科学家、后端程序员的喜爱。本次 AKToolsAKShareFastAPI 强强联合,用于构建快速且高效的 HTTP API 工具。

快速安装

安装要求

由于 AKTools 是基于 AKShareFastAPI 的,所以 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 进行测试,如果可以获取到数据则本地镜像构建及使用成功!