温馨提示:若页面不能正常显示数学公式和代码,请阅读原文获得更好的阅读体验。

作者: 连玉君 (中山大学)
邮箱: arlionn@163.com

  • Title: API 是什么?
  • Keywords: 应用程序编程接口, 数据获取, akshare, yfinance, 大语言模型, OpenAI, 百度文心一言, 讯飞星火, AI工具

API 是 Application Programming Interface 的缩写,中文翻译为「应用程序编程接口」。它是一套让你方便、安全、标准地远程获取服务或数据的规则和工具。

本文将通过通俗易懂的方式,结合实际案例,帮助初学者快速理解 API 的概念、工作原理和常见应用场景。

1. API 初探

我们先从一个生活中的例子开始,为了让大家对 API 有个直观的理解。去餐厅吃饭时,扫码点餐 的流程大致如下:

  1. 你在 5 号桌落座后,扫描餐桌上的二维码,手机上会弹出点餐界面(菜单)。
  2. 你在菜单上勾选酸菜鱼,并设置口味:微辣不要香菜
  3. 下单后,手机会自动把你的菜品和要求发送到厨房。
  4. 厨师收到信息后开始烹饪,最后上菜到你的桌前。

API 的工作原理和这个点餐流程非常相似。采用 API 的术语,上述点餐流程包括如下几个关键概念:

  • API 就像餐厅的「点餐系统」,让你不用直接进厨房,只需通过手机菜单(API 接口)就能完成复杂的操作。
  • Endpoint(端点):你扫描了 5 号桌上的二维码后进入的点餐页面,就是 API 的 “入口” 或 “网址”。
  • Request(请求):你勾选菜品、填写口味、按下 “提交” 按钮,这一系列操作就组成了一个 API 请求,把你的要求传递给餐厅的后厨系统。
  • Parameter(参数):你点了哪道菜 (酸菜鱼)、选择了什么口味(微辣不要香菜),这些都属于 API 的参数。
  • API Key(密钥):类似于账号和密码。就像有些高档餐厅只对会员开放,需要出示会员卡才能点餐,API Key 就像这张会员卡,是一串唯一的字符串,用于证明你的身份和权限。

以上点餐过程的完整请求数据可以采用如下参数方式表示:

request = {"table_number"=5, 
           "dish"="酸菜鱼", 
           "spiciness"="微辣", 
           "no_coriander"=True}

2. Python 实例:获取茅台股票信息

进行数据分析时,我们经常需要从外部获取数据,比如股票行情、天气预报、新闻资讯等。以股票交易数据为例,雅虎财经(Yahoo Finance)、新浪财经(新浪财经)、东方财富(东方财富网)等网站都提供了丰富的股票数据。借助 yfinanceakshare 等 Python 库,我们只需编写几行简单的代码,就能轻松获取这些数据。

2.1 使用 akshare 获取贵州茅台股票数据

下面是一个可以实操的例子:使用 akshare 库来获取贵州茅台(股票代码:600519)2024 年的日行情数据。Python 代码如下:

# pip install akshare  # 安装 akshare 库
import akshare as ak   # 导入 akshare 库

df_maotai = ak.stock_zh_a_hist(
    symbol="600519",         # 参数:贵州茅台股票代码
    period="daily",          # 参数:日线数据
    start_date="20240101",   # 参数:起始日期
    end_date="20241231",     # 参数:结束日期
    adjust="qfq"             # 参数:前复权
)[["日期", "收盘", "涨跌幅"]]  # 数据处理:选择字段

print(df_maotai.head())      # 响应:展示部分结果

输出结果如下:

日期       收盘   涨跌幅
0  2024-01-02  1630.25 -2.45
1  2024-01-03  1639.24  0.55
2  2024-01-04  1614.24 -1.53
3  2024-01-05  1608.60 -0.35
4  2024-01-08  1589.23 -1.20

在上述代码中:

  • API:是「东方财富」等数据平台对外提供的数据服务规范 (在上述代码中,我们并未意识到这一点),akshare 封装并简化了这些 API 的调用过程。
  • 接口ak.stock_zh_a_hist() 是 akshare 库为 Python 用户设计的调用 “接口” (采用函数的方式来实现其功能),本质是把用户的需求打包成标准的 API 请求,发往东方财富的数据服务。
  • 参数:如 symbol="600519"start_date="20240101" 等,是 API 所需的具体参数,用于明确请求的数据范围、品种等。
  • 请求:Python 程序通过 akshare 的接口函数,把参数打包发送给数据服务平台,平台返回结果(如 JSON、表格),akshare 再把它整理成 DataFrame 返回。

有几个容易混淆的概念需要澄清:

需要说明说的是,在上述代码中,akshare 库以及它提供的函数 ak.stock_zh_a_hist() 都不是 API。akshare 只是对「东方财富」数据平台提供的 API 进行了封装。它提供了更易用的函数接口,让用户可以通过简单的 Python 代码获取复杂的数据,而无需直接处理底层的 API 请求和响应。

换言之,akshare 只是充当了「中间人」的角色:它将用户在 Python 代码中写下的参数和需求,翻译成标准化的 API 请求,通过网络发送给数据平台(如东方财富);平台返回数据后,akshare 再将原始结果处理成便于分析的 DataFrame 格式。这样,用户表面上用的是 akshare 的 Python API,背后则是数据网站的网络 API。这一过程极大简化了数据获取,提升了安全性和自动化程度。

从另一个角度来看,akshare 一方面在后台调用了数据平台 (东方财富) 的网络 API,另一方面也为用户提供了 Python 层的 API(即各种易用的函数/接口)

2.2 akshare 的其他常用接口函数

除了前文介绍的 stock_zh_a_hist() 接口函数外,akshare 包还提供了丰富的数据接口,方便用户下载不同类型的金融和经济数据。主要接口包括:

主要接口函数列表:

温馨提示:若页面不能正常显示数学公式和代码,请阅读原文获得更好的阅读体验。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐