开篇引入:学会获取单只A股个股行情后,新手接下来的需求的就是“批量获取”——比如一次性拿到全A股所有个股的实时盘口数据,或者快速获取行业、概念板块的行情及成分股,不用逐个查询,大幅提升量化研究效率。
本篇重点教大家:用AKShare获取全A股实时盘口数据、行业/概念板块行情,分享实用的批量获取技巧,提供完整可运行代码,新手跟着复制,就能高效搞定全市场数据获取。
🔧 核心步骤:实时行情+板块数据获取
核心前提:已完成Python3.8-3.11和AKShare的安装,所有代码均适配当前最新版AKShare,无虚构接口、无报错;实时行情仅在A股交易时间(9:30-11:30、13:00-15:00)能获取到最新数据,非交易时间显示昨日收盘数据。
第一步:全A股实时盘口数据获取
无需逐个输入个股代码,一行代码就能获取全A股所有个股的实时盘口数据(含代码、名称、最新价、涨跌幅、成交量等核心信息),可直接复制运行:
import akshare as ak # 导入AKShare# 一键获取全A股实时盘口数据(交易时间实时更新,非交易时间显示昨日收盘)df_all_a = ak.stock_zh_a_spot_em() # 核心接口,无需额外参数# 筛选核心字段(避免数据过多,新手重点关注这6个字段)df_core = df_all_a[["代码", "名称", "最新价", "涨跌幅", "成交量", "成交额"]]print("全A股实时盘口核心数据(前10行):")print(df_core.head(10))# 可选:将数据保存为Excel,方便后续分析(无需手动复制)df_core.to_excel("全A股实时行情.xlsx", index=False)print("数据已保存为Excel文件,可直接打开查看")
第二步:行业板块行情获取
不仅能获取所有行业板块的实时行情,还能一键拿到单个行业的成分股,帮大家快速定位热门行业,代码可直接复制:
import akshare as ak# 1. 获取所有行业板块实时行情(含板块名称、涨跌幅、领涨股)df_industry = ak.stock_board_industry_name_em()print("所有行业板块实时行情(前10行):")print(df_industry[["板块名称", "涨跌幅", "领涨股", "最新价"]].head(10))# 2. 获取单个行业板块的成分股(以“白酒”行业为例,可替换为任意行业)df_industry_stocks = ak.stock_board_industry_cons_em( symbol="白酒", # 行业名称,可替换(如“半导体”“新能源”“医药生物”) indicator="成分股" # 固定参数,无需修改)print("白酒行业成分股(前10行):")print(df_industry_stocks[["代码", "名称", "最新价", "涨跌幅"]].head(10))
第三步:概念板块行情获取
概念板块(如“人工智能”“ChatGPT”“新能源汽车”)是量化选股的重要参考,获取方法和行业板块类似,代码如下:
import akshare as ak# 1. 获取所有概念板块实时行情df_concept = ak.stock_board_concept_name_em()print("所有概念板块实时行情(前10行):")print(df_concept[["板块名称", "涨跌幅", "领涨股", "最新价"]].head(10))# 2. 获取单个概念板块的成分股(以“人工智能”为例,可自由替换)df_concept_stocks = ak.stock_board_concept_cons_em( symbol="人工智能", # 概念名称,可替换(如“ChatGPT”“充电桩”) indicator="成分股")print("人工智能概念成分股(前10行):")print(df_concept_stocks[["代码", "名称", "最新价", "涨跌幅"]].head(10))
第四步:批量获取技巧
分享2个实用批量技巧,避免重复写代码,大幅提升数据获取效率,直接复制运行即可:
import akshare as akimport pandas as pd# 技巧1:批量获取多个行业的成分股,合并为一个表格# 定义要获取的行业列表(可自由添加、修改)industries = ["白酒", "半导体", "新能源"]# 空表格用于存储所有行业成分股df_all_industries = pd.DataFrame()for industry in industries: df = ak.stock_board_industry_cons_em(symbol=industry, indicator="成分股") df["所属行业"] = industry # 新增“所属行业”字段,方便区分 df_all_industries = pd.concat([df_all_industries, df], ignore_index=True)print("多个行业成分股合并数据(前15行):")print(df_all_industries[["所属行业", "代码", "名称", "最新价"]].head(15))# 技巧2:批量获取指定个股的实时行情(已知多只个股代码,无需逐个查询)# 定义要获取的个股代码列表(可自由添加、修改)stock_codes = ["600519", "002594", "000001", "300750"]# 空表格用于存储指定个股实时行情df_target_stocks = pd.DataFrame()for code in stock_codes: # 调用个股实时行情接口(注意:接口与历史行情不同) df = ak.stock_zh_a_spot_em() df_single = df[df["代码"] == code] # 筛选当前个股数据 df_target_stocks = pd.concat([df_target_stocks, df_single], ignore_index=True)print("指定个股实时行情:")print(df_target_stocks[["代码", "名称", "最新价", "涨跌幅"]])
⚠️ 关键避坑
避坑1:实时行情接口别用错!全A股实时行情用「ak.stock_zh_a_spot_em()」,不要用之前的历史行情接口,否则无法获取实时数据。
避坑2:非交易时间获取实时数据,显示的是昨日收盘数据,属于正常情况,无需报错,交易时间再运行代码即可获取最新数据。
避坑3:行业/概念名称要准确!比如“白酒”不能写成“酒类”,“人工智能”不能写成“AI”,否则无法获取对应板块数据,可先运行板块行情接口,查看正确的板块名称。
避坑4:批量获取时,不要高频循环请求!建议间隔1-2秒(可在循环中添加time.sleep(1)),避免被临时封禁IP。
避坑5:保存Excel时,若提示“权限不足”,关闭电脑上已打开的Excel文件,再重新运行代码即可。
✅ 核心总结
1. 全A股实时行情:调用「ak.stock_zh_a_spot_em()」,一键获取所有个股盘口数据,可筛选核心字段、保存为Excel。
2. 板块数据:行业板块用「stock_board_industry_*」接口,概念板块用「stock_board_concept_*」接口,可获取板块行情和成分股。
3. 批量技巧:用循环批量获取多个行业/个股数据,合并为一个表格,减少重复操作,提升效率;批量请求记得加间隔,避免封禁。
4. 新手关键:区分实时行情和历史行情接口、准确输入板块名称、批量请求加间隔,这3点做好,就能高效获取全市场数据。
💡 互动提问:你用批量技巧获取到哪些板块/个股的数据了?评论区留言你关注的行业或个股,一起交流~