深圳融克迪特科技有限公司 Logo,金融科技,量化交易,软件开发

深圳融克迪特科技有限公司

RONG CREDIT TECHNOLOGY CO., LTD.

基础入门

【AkShare 系列 第1讲】安装AkShare:先取一份A股列表

本讲围绕 AkShare 的第一次上手,完成“安装成功并取回一份 A 股列表”这一最小可验证任务。内容覆盖环境准备、安装命令、股票列表接口调用、表结构检查与常见报错排查,目标是在最短路径内确认本地 Python 环境、AkShare 包与基础数据接口已经可用,为后续抓取个股日线和指数数据建立稳定入口。

2026-04-22 智铨研究 阅读时长 7 分钟

目录

  1. 本节目标
  2. 为什么第 1 讲先做“A 股列表”而不是直接拉行情
  3. 先把运行条件压到最小
  4. 三步拿到第一张 A 股列表
  5. 导入 AkShare 并确认版本
  6. 调用股票列表接口
  7. 做最小结构检查
  8. 怎样判断这次真的成功了
  9. 返回对象类型正确
  10. 表格不是空的
  11. 至少包含基础识别字段
  12. 能够完成一次最小筛选
  13. 第一次用 AkShare 最容易卡在哪
  14. ModuleNotFoundError: No module named 'akshare'
  15. 导入成功,但接口调用报网络相关错误
  16. 返回字段和示例不完全一致
  17. 拿到了表,但后面不知道怎么用
  18. 哪些现象不算失败
  19. 把这一步固化成可复用模板
  20. 本讲小结
  21. 系列衔接
  22. 风险揭示与免责声明

1. 本节目标

本讲只完成一件事:在本地成功安装 AkShare,并取回一份可验证的 A 股股票列表。这是整个入门短课的起点,因为后面“获取单只股票日线”“下载指数数据”“抓取财经日历”都建立在两个前提上:

  1. 你的 Python 环境可以正常导入 akshare
  2. 你已经知道 AkShare 返回的数据是怎样的表格结构。

本讲不讨论因子研究、不讨论回测,也不讨论接口覆盖范围。只要求完成一个最小可验证任务:运行一段极短代码,成功拿到一张 A 股列表表格,并能检查它至少包含若干可识别的证券字段。

2. 为什么第 1 讲先做“A 股列表”而不是直接拉行情

新手第一次用 AkShare,最容易犯的错误是:一上来就去抓单只股票历史行情,然后在股票代码格式、字段命名、接口返回为空这些问题上反复卡住。相比之下,“先取一份 A 股列表”有三个优势:

  1. 返回结果直观,拿到就是一张表,方便肉眼验证。
  2. 它能顺手确认网络、依赖、接口可用性三个前置条件。
  3. 后续抓日线、财务指标、板块数据时,都需要先知道代码或标识字段怎么表示。

所以这一步不是“简单热身”,而是整个 AkShare 学习路径的第一块地基。

3. 先把运行条件压到最小

本讲建议使用一个干净环境,不要直接在系统 Python 里安装。最小环境只需要:

conda create -n akshare-starter python=3.10 -y
conda activate akshare-starter
pip install akshare pandas

如果你平时不用 conda,也可以直接:

python -m venv .venv
.venv\Scripts\activate
pip install akshare pandas

安装完成后,先不要急着调用接口,先跑下面两行确认包真的装进当前环境了:

python -c "import akshare as ak; import pandas as pd; print('ok')"

如果这一步都没过,后面任何接口调用都没有意义。

4. 三步拿到第一张 A 股列表

5. 导入 AkShare 并确认版本

import akshare as ak
import pandas as pd

print(ak.__version__)

版本号不要求必须固定到某个具体值,但建议记录一下。后面如果同一段代码在别的机器上跑不通,先比对版本,排障成本会低很多。

6. 调用股票列表接口

最直接的入门写法可以用下面这段:

stock_df = ak.stock_info_a_code_name()
print(stock_df.head())

这一步的目标不是“研究所有列”,而是先确认三件事:

  1. 返回值是 DataFrame
  2. 表里确实有多行数据,而不是空表。
  3. 至少能看到股票代码和股票名称这类基础字段。

一个正常的输出,通常前几行会类似下面这种结构:

	 code    name
0  000001  平安银行
1  000002  万科A
2  000004  国华网安

字段名在不同版本可能略有差异,但核心特征不会变:它应该是一张可按行浏览、可后续筛选的证券基础信息表。

7. 做最小结构检查

不要停在 head()。至少把下面几行跑完:

print(type(stock_df))
print(stock_df.shape)
print(stock_df.columns.tolist())
print(stock_df.iloc[0].to_dict())

这一步的意义在于,把“看起来拿到了数据”升级成“知道数据结构是什么”。后面第 2 讲抓单只股票日线时,你就知道代码列到底应该取哪一列,而不是靠猜。

8. 怎样判断这次真的成功了

本讲的成功标准不要模糊,直接按下面四条判断:

9. 返回对象类型正确

assert isinstance(stock_df, pd.DataFrame)

如果这里失败,说明返回值根本不是表格结构,通常是前面导入或接口调用就出了问题。

10. 表格不是空的

assert len(stock_df) > 0

只要是正常联网和正常接口,A 股列表不应该为空。空表通常意味着网络、依赖或接口状态异常。

11. 至少包含基础识别字段

columns = [str(col).lower() for col in stock_df.columns]
assert any('code' in col or '代码' in col for col in columns)
assert any('name' in col or '名称' in col for col in columns)

这能防止你拿到一张别的结构的表,误以为成功。

12. 能够完成一次最小筛选

first_rows = stock_df.head(10)
print(first_rows)

如果前 10 行能正常打印,说明 DataFrame 至少已经进入“可检查、可筛选、可保存”的状态。

13. 第一次用 AkShare 最容易卡在哪

14. ModuleNotFoundError: No module named 'akshare'

这通常不是安装失败,而是终端没切到你刚装包的环境。先跑:

where python
pip show akshare

确认当前 python 和安装包所在环境一致。

15. 导入成功,但接口调用报网络相关错误

AkShare 很多接口依赖外部数据源。如果当前网络受限、代理配置异常,或者目标站点暂时不可达,就会报连接错误。这类问题不要先改代码,先确认本机网络状态和目标接口是否可访问。

16. 返回字段和示例不完全一致

这是正常现象。AkShare 接口字段可能随版本或上游数据源微调。第 1 讲不要求死记字段名,只要求你先学会用 columns.tolist()head() 看清结构。

17. 拿到了表,但后面不知道怎么用

这正是第 1 讲的边界。当前任务只到“拿到并验证列表”。真正开始用代码拉单只股票历史数据,是下一讲的主题,不要在第 1 讲里把问题做大。

18. 哪些现象不算失败

下面几种情况容易让新手误判:

  1. 列名和教程截图略有差异,不算失败,只要结构清楚且可读取即可。
  2. 表行数很多,打印不全不算失败,用 head()shape 检查就够了。
  3. 某些股票名称带特殊字符,不算失败,这是原始数据的一部分。
  4. 首次调用稍慢,不算失败,只要最后能返回 DataFrame 即可。

真正需要处理的失败,只有三类:导入失败、接口报错、返回空表。

19. 把这一步固化成可复用模板

如果你打算后续经常用 AkShare,不要每次都手写散乱代码。建议把第 1 讲沉淀成一个 10 行左右的模板脚本:

import akshare as ak
import pandas as pd

def load_a_share_list() -> pd.DataFrame:
	df = ak.stock_info_a_code_name()
	if df.empty:
		raise ValueError("A股列表为空,请检查网络或接口状态")
	return df

stock_df = load_a_share_list()
print(stock_df.head())

这样后面你要抓单只股票日线时,就可以先从这张列表里取代码,再往下接,不用重复找入口。

20. 本讲小结

本讲的核心不是“学会一个接口”,而是建立最小可验证的 AkShare 上手路径:先装包,再导入,再拿到一张能被检查的 A 股列表表格。只要这条路径通了,后面的单只股票日线、指数数据、财经日历和 CSV 保存,都会变成同一套模式的重复练习,而不是重新开题。

21. 系列衔接

本讲是《AkShare数据获取入门短课》的第 1/8 讲,当前主题是《安装AkShare:先取一份A股列表》。

这是本系列的开篇,重点是把后续实操会反复使用的核心概念、输入输出和判断标准先立住。

下一讲:第 2 讲《获取单只股票日线》。

后续安排:第 3 讲《下载上证指数近一个月数据》;第 4 讲《抓取一份财经日历》。

22. 风险揭示与免责声明

风险揭示与免责声明

本页面内容仅用于量化研究与技术交流,旨在展示研究方法与流程,不构成对任何金融产品、证券或衍生品的要约、招揽、推荐或保证。

本文所涉历史数据、回测结果与示例参数不代表未来表现,也不应作为投资决策依据。

市场存在波动、流动性与执行偏差等不确定性,任何策略均可能出现收益波动或阶段性失效。

读者应结合自身风险承受能力进行独立判断,并在必要时咨询持牌专业机构意见。