基础入门
本讲围绕 AkShare 的第一次上手,完成“安装成功并取回一份 A 股列表”这一最小可验证任务。内容覆盖环境准备、安装命令、股票列表接口调用、表结构检查与常见报错排查,目标是在最短路径内确认本地 Python 环境、AkShare 包与基础数据接口已经可用,为后续抓取个股日线和指数数据建立稳定入口。
本讲只完成一件事:在本地成功安装 AkShare,并取回一份可验证的 A 股股票列表。这是整个入门短课的起点,因为后面“获取单只股票日线”“下载指数数据”“抓取财经日历”都建立在两个前提上:
akshare。本讲不讨论因子研究、不讨论回测,也不讨论接口覆盖范围。只要求完成一个最小可验证任务:运行一段极短代码,成功拿到一张 A 股列表表格,并能检查它至少包含若干可识别的证券字段。
新手第一次用 AkShare,最容易犯的错误是:一上来就去抓单只股票历史行情,然后在股票代码格式、字段命名、接口返回为空这些问题上反复卡住。相比之下,“先取一份 A 股列表”有三个优势:
所以这一步不是“简单热身”,而是整个 AkShare 学习路径的第一块地基。
本讲建议使用一个干净环境,不要直接在系统 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')"
如果这一步都没过,后面任何接口调用都没有意义。
import akshare as ak
import pandas as pd
print(ak.__version__)
版本号不要求必须固定到某个具体值,但建议记录一下。后面如果同一段代码在别的机器上跑不通,先比对版本,排障成本会低很多。
最直接的入门写法可以用下面这段:
stock_df = ak.stock_info_a_code_name()
print(stock_df.head())
这一步的目标不是“研究所有列”,而是先确认三件事:
DataFrame。一个正常的输出,通常前几行会类似下面这种结构:
code name
0 000001 平安银行
1 000002 万科A
2 000004 国华网安
字段名在不同版本可能略有差异,但核心特征不会变:它应该是一张可按行浏览、可后续筛选的证券基础信息表。
不要停在 head()。至少把下面几行跑完:
print(type(stock_df))
print(stock_df.shape)
print(stock_df.columns.tolist())
print(stock_df.iloc[0].to_dict())
这一步的意义在于,把“看起来拿到了数据”升级成“知道数据结构是什么”。后面第 2 讲抓单只股票日线时,你就知道代码列到底应该取哪一列,而不是靠猜。
本讲的成功标准不要模糊,直接按下面四条判断:
assert isinstance(stock_df, pd.DataFrame)
如果这里失败,说明返回值根本不是表格结构,通常是前面导入或接口调用就出了问题。
assert len(stock_df) > 0
只要是正常联网和正常接口,A 股列表不应该为空。空表通常意味着网络、依赖或接口状态异常。
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)
这能防止你拿到一张别的结构的表,误以为成功。
first_rows = stock_df.head(10)
print(first_rows)
如果前 10 行能正常打印,说明 DataFrame 至少已经进入“可检查、可筛选、可保存”的状态。
这通常不是安装失败,而是终端没切到你刚装包的环境。先跑:
where python
pip show akshare
确认当前 python 和安装包所在环境一致。
AkShare 很多接口依赖外部数据源。如果当前网络受限、代理配置异常,或者目标站点暂时不可达,就会报连接错误。这类问题不要先改代码,先确认本机网络状态和目标接口是否可访问。
这是正常现象。AkShare 接口字段可能随版本或上游数据源微调。第 1 讲不要求死记字段名,只要求你先学会用 columns.tolist() 和 head() 看清结构。
这正是第 1 讲的边界。当前任务只到“拿到并验证列表”。真正开始用代码拉单只股票历史数据,是下一讲的主题,不要在第 1 讲里把问题做大。
下面几种情况容易让新手误判:
head() 或 shape 检查就够了。真正需要处理的失败,只有三类:导入失败、接口报错、返回空表。
如果你打算后续经常用 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())
这样后面你要抓单只股票日线时,就可以先从这张列表里取代码,再往下接,不用重复找入口。
本讲的核心不是“学会一个接口”,而是建立最小可验证的 AkShare 上手路径:先装包,再导入,再拿到一张能被检查的 A 股列表表格。只要这条路径通了,后面的单只股票日线、指数数据、财经日历和 CSV 保存,都会变成同一套模式的重复练习,而不是重新开题。
本讲是《AkShare数据获取入门短课》的第 1/8 讲,当前主题是《安装AkShare:先取一份A股列表》。
这是本系列的开篇,重点是把后续实操会反复使用的核心概念、输入输出和判断标准先立住。
下一讲:第 2 讲《获取单只股票日线》。
后续安排:第 3 讲《下载上证指数近一个月数据》;第 4 讲《抓取一份财经日历》。
风险揭示与免责声明
本页面内容仅用于量化研究与技术交流,旨在展示研究方法与流程,不构成对任何金融产品、证券或衍生品的要约、招揽、推荐或保证。
本文所涉历史数据、回测结果与示例参数不代表未来表现,也不应作为投资决策依据。
市场存在波动、流动性与执行偏差等不确定性,任何策略均可能出现收益波动或阶段性失效。
读者应结合自身风险承受能力进行独立判断,并在必要时咨询持牌专业机构意见。