akshare-api


Nameakshare-api JSON
Version 1.1.0 PyPI version JSON
download
home_pagehttps://github.com/JoshuaMaoJH/akshare-api
Summary基于AKTools公开API的AKShare股票数据接口Python调用库
upload_time2025-10-23 07:17:20
maintainerJMTechPower
docs_urlNone
authorJMTechPower
requires_python>=3.7
licenseNone
keywords akshare stock finance api data trading china market
VCS
bugtrack_url
requirements requests pandas numpy openpyxl
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # AKShare API

[![PyPI version](https://badge.fury.io/py/akshare-api.svg)](https://badge.fury.io/py/akshare-api)
[![Python Support](https://img.shields.io/pypi/pyversions/akshare-api.svg)](https://pypi.org/project/akshare-api/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Downloads](https://pepy.tech/badge/akshare-api)](https://pepy.tech/project/akshare-api)

基于AKTools公开API的AKShare股票数据接口Python调用库,提供完整的股票数据获取功能。
**支持自动安装和启动AKTools服务,无需手动配置!**

## ✨ 特性

- 🎯 **接口完整**: 涵盖AKShare文档中所有股票相关的数据接口(共98个接口)
- 🌍 **市场全面**: 支持A股、B股、港股、美股等多个市场
- 🔥 **功能丰富**: 包含实时行情、历史数据、基本面分析、资金流向等高级功能
- 🚀 **调用简便**: 通过封装的Python方法,一行代码即可获取数据
- ⚙️ **参数灵活**: 支持多种参数配置,满足不同分析需求
- 🛡️ **错误处理**: 内置异常处理机制,确保程序稳定运行
- 📊 **数据格式**: 统一返回pandas.DataFrame格式,便于数据分析
- 📚 **文档详细**: 每个接口都包含完整的参数说明和使用示例
- 🔧 **自动服务管理**: 自动安装和启动AKTools服务,无需手动配置
- 🔄 **智能重连**: 连接失败时自动重启服务并重试请求

## 📦 安装

### 从PyPI安装(推荐)

```bash
pip install akshare-api
```

### 从源码安装

```bash
git clone https://github.com/JoshuaMaoJH/akshare-api.git
cd akshare-api
pip install -e .
```

## 🚀 快速开始

### 基础使用(推荐)

```python
from akshare_api import stock_zh_a_spot_em, stock_zh_a_hist

# 获取A股实时行情(自动启动AKTools服务)
spot_data = stock_zh_a_spot_em()
print(f"共获取到 {len(spot_data)} 只股票数据")

# 获取历史行情数据
hist_data = stock_zh_a_hist(symbol="000001", start_date="20240101", end_date="20240131")
print(hist_data.head())
```

### 面向对象使用

```python
from akshare_api import AKShareAPI

# 创建API客户端(自动启动AKTools服务)
api = AKShareAPI(base_url="http://127.0.0.1:8080")

# 获取数据
data = api.stock_zh_a_spot_em()
print(data.head())

# 查看服务状态
status = api.get_service_status()
print(f"服务状态: {status}")
```

### 手动服务管理

```python
from akshare_api import AKShareAPI

# 禁用自动服务管理
api = AKShareAPI(auto_start_service=False)

# 手动管理服务
api.start_service()  # 启动服务
api.restart_service()  # 重启服务
api.stop_service()  # 停止服务
```

### 命令行工具

```bash
# 测试API连接(自动启动服务)
akshare-api --test-connection

# 列出所有可用接口
akshare-api --list-interfaces

# 服务管理
akshare-api --start-service      # 启动服务
akshare-api --stop-service       # 停止服务
akshare-api --restart-service    # 重启服务
akshare-api --service-status     # 查看服务状态

# 指定API基础URL
akshare-api --base-url http://localhost:8080 --test-connection
```

## 📊 支持的接口

### 接口统计总览

| 分类 | 接口数量 | 说明 |
|------|----------|------|
| **A股数据接口** | 47个 | 包含市场总貌、个股信息、实时行情、历史数据、分时数据等 |
| **B股数据接口** | 4个 | B股实时行情、历史数据、分时数据 |
| **港股数据接口** | 3个 | 港股实时行情、历史数据 |
| **美股数据接口** | 3个 | 美股实时行情、历史数据 |
| **高级功能接口** | 36个 | 基本面数据、资金流向、概念板块、行业分析等 |
| **其他功能接口** | 5个 | 股票比较分析相关接口 |
| **总计** | **98个** | **完整的股票数据接口库** |

### 🏢 A股数据接口 (47个)

#### 市场总貌 (5个)
- `stock_sse_summary()` - 上海证券交易所总貌数据
- `stock_szse_summary()` - 深圳证券交易所总貌数据
- `stock_szse_area_summary()` - 深圳证券交易所地区交易排序
- `stock_szse_sector_summary()` - 深圳证券交易所股票行业成交数据
- `stock_sse_deal_daily()` - 上海证券交易所每日概况数据

#### 个股信息查询 (2个)
- `stock_individual_info_em()` - 个股信息查询-东方财富
- `stock_individual_basic_info_xq()` - 个股信息查询-雪球

#### 实时行情数据 (10个)
- `stock_zh_a_spot_em()` - 沪深京A股实时行情-东方财富
- `stock_sh_a_spot_em()` - 沪A股实时行情-东方财富
- `stock_sz_a_spot_em()` - 深A股实时行情-东方财富
- `stock_bj_a_spot_em()` - 京A股实时行情-东方财富
- `stock_new_a_spot_em()` - 新股实时行情-东方财富
- `stock_cy_a_spot_em()` - 创业板实时行情-东方财富
- `stock_kc_a_spot_em()` - 科创板实时行情-东方财富
- `stock_zh_ab_comparison_em()` - AB股比价-东方财富
- `stock_zh_a_spot()` - 沪深京A股实时行情-新浪
- `stock_individual_spot_xq()` - 个股实时行情-雪球

#### 历史行情数据 (3个)
- `stock_zh_a_hist()` - 历史行情数据-东方财富
- `stock_zh_a_daily()` - 历史行情数据-新浪
- `stock_zh_a_hist_tx()` - 历史行情数据-腾讯

#### 分时数据 (5个)
- `stock_zh_a_minute()` - 分时数据-新浪
- `stock_zh_a_hist_min_em()` - 分时数据-东方财富
- `stock_intraday_em()` - 日内分时数据-东方财富
- `stock_intraday_sina()` - 日内分时数据-新浪
- `stock_zh_a_hist_pre_min_em()` - 盘前数据-东方财富

### 🌍 其他市场数据接口

#### B股数据接口 (4个)
- `stock_zh_b_spot_em()` - B股实时行情-东方财富
- `stock_zh_b_spot()` - B股实时行情-新浪
- `stock_zh_b_daily()` - B股历史行情数据-新浪
- `stock_zh_b_minute()` - B股分时数据-新浪

#### 港股数据接口 (3个)
- `stock_hk_spot_em()` - 港股实时行情-东方财富
- `stock_hk_spot()` - 港股实时行情-新浪
- `stock_hk_daily()` - 港股历史行情数据-新浪

#### 美股数据接口 (3个)
- `stock_us_spot()` - 美股实时行情-新浪
- `stock_us_spot_em()` - 美股实时行情-东方财富
- `stock_us_daily()` - 美股历史行情数据-新浪

### 🔥 高级功能接口 (36个)

#### 涨停板行情 (3个)
- `stock_zt_pool_em()` - 涨停股池
- `stock_zt_pool_previous_em()` - 昨日涨停股池
- `stock_dt_pool_em()` - 跌停股池

#### 龙虎榜 (2个)
- `stock_lhb_detail_em()` - 龙虎榜详情
- `stock_lhb_stock_statistic_em()` - 个股上榜统计

#### 机构相关 (5个)
- `stock_institute_visit_em()` - 机构调研统计
- `stock_institute_visit_detail_em()` - 机构调研详细
- `stock_institute_hold_detail()` - 机构持股详情
- `stock_institute_recommend()` - 机构推荐池
- `stock_institute_recommend_detail()` - 股票评级记录

#### 研报资讯 (6个)
- `stock_research_report_em()` - 个股研报
- `stock_info_cjzc_em()` - 财经早餐
- `stock_info_global_em()` - 全球财经快讯-东方财富
- `stock_info_global_sina()` - 全球财经快讯-新浪财经
- `stock_news_em()` - 个股新闻-东方财富
- `stock_news_main_cx()` - 财经内容精选-财新网

## 📖 详细使用说明

### 🔧 服务管理API

#### 服务状态管理

```python
from akshare_api import AKShareAPI

api = AKShareAPI()

# 获取服务状态
status = api.get_service_status()
print(f"服务运行状态: {status['running']}")
print(f"服务端口: {status['port']}")
print(f"基础URL: {status['base_url']}")
if status['response_time']:
    print(f"响应时间: {status['response_time']:.2f}ms")

# 重启服务
if api.restart_service():
    print("服务重启成功")
else:
    print("服务重启失败")

# 停止服务
api.stop_service()
print("服务已停止")
```

#### 全局服务管理

```python
from akshare_api.service_manager import get_service_manager, ensure_service_running

# 获取全局服务管理器
manager = get_service_manager(port=8080, auto_start=True)

# 确保服务正在运行
if ensure_service_running(port=8080):
    print("服务正在运行")
else:
    print("服务启动失败")
```

### 📊 高级功能示例

#### 涨停板数据

```python
from akshare_api import stock_zt_pool_em, stock_zt_pool_previous_em, stock_dt_pool_em

# 获取涨停股池
zt_data = stock_zt_pool_em()
print(f"今日涨停股票: {len(zt_data)} 只")

# 获取昨日涨停股池
prev_zt_data = stock_zt_pool_previous_em()
print(f"昨日涨停股票: {len(prev_zt_data)} 只")

# 获取跌停股池
dt_data = stock_dt_pool_em()
print(f"今日跌停股票: {len(dt_data)} 只")
```

#### 龙虎榜数据

```python
from akshare_api import stock_lhb_detail_em, stock_lhb_stock_statistic_em

# 获取龙虎榜详情
lhb_detail = stock_lhb_detail_em(
    start_date="20240403", 
    end_date="20240417"
)

# 获取个股上榜统计
lhb_stats = stock_lhb_stock_statistic_em()
```

#### 机构相关数据

```python
from akshare_api import stock_institute_visit_em, stock_institute_recommend

# 获取机构调研统计
institute_visit = stock_institute_visit_em()

# 获取机构推荐池
institute_recommend = stock_institute_recommend(symbol="000001")
```

#### 分时数据

```python
from akshare_api import stock_zh_a_hist_min_em, stock_intraday_em

# 获取分时数据
minute_data = stock_zh_a_hist_min_em(
    symbol="000001",
    period="1",
    start_date="2024-01-01 09:30:00",
    end_date="2024-01-01 15:00:00"
)

# 获取日内分时数据
intraday_data = stock_intraday_em(symbol="000001")
```

### 💾 数据保存示例

```python
from akshare_api import stock_zh_a_spot_em

# 获取数据
spot_data = stock_zh_a_spot_em()

# 保存为CSV文件
spot_data.to_csv('stock_data.csv', index=False, encoding='utf-8-sig')

# 保存为Excel文件
spot_data.to_excel('stock_data.xlsx', index=False)

# 保存为JSON文件
spot_data.to_json('stock_data.json', orient='records', force_ascii=False, indent=2)
```

### 🔄 批量数据获取

```python
import time
from akshare_api import stock_zh_a_hist

def batch_get_stock_data(symbols, start_date, end_date):
    """批量获取多只股票的历史数据"""
    results = {}
    for symbol in symbols:
        try:
            df = stock_zh_a_hist(symbol=symbol, start_date=start_date, end_date=end_date)
            results[symbol] = df
            print(f"成功获取 {symbol} 的数据,共 {len(df)} 条记录")
            time.sleep(0.5)  # 避免请求过于频繁
        except Exception as e:
            print(f"获取 {symbol} 数据失败: {e}")
    return results

# 使用示例
symbols = ["000001", "000002", "600000", "600036"]
data_dict = batch_get_stock_data(symbols, "20240101", "20240131")
```

### 🛡️ 错误处理

```python
from akshare_api import stock_zh_a_spot_em, AKShareAPIError

try:
    data = stock_zh_a_spot_em()
    if data.empty:
        print("未获取到数据")
    else:
        print(f"获取到 {len(data)} 条数据")
except AKShareAPIError as e:
    print(f"API错误: {e}")
    print("提示: 服务会自动尝试重启")
except Exception as e:
    print(f"未知错误: {e}")
```

### 🎯 完整示例

```python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
AKShare API 完整使用示例
"""

from akshare_api import (
    stock_zh_a_spot_em,
    stock_zh_a_hist,
    stock_sse_summary,
    stock_zt_pool_em,
    AKShareAPI,
    AKShareAPIError
)

def main():
    """主函数"""
    print("=== AKShare API 完整使用示例 ===\n")
    
    try:
        # 1. 基础使用 - 自动启动服务
        print("1. 获取A股实时行情...")
        spot_data = stock_zh_a_spot_em()
        print(f"   获取到 {len(spot_data)} 只股票数据")
        
        # 2. 面向对象使用
        print("\n2. 面向对象使用...")
        api = AKShareAPI()
        
        # 查看服务状态
        status = api.get_service_status()
        print(f"   服务状态: {'运行中' if status['running'] else '未运行'}")
        
        # 获取历史数据
        print("\n3. 获取历史数据...")
        hist_data = stock_zh_a_hist(symbol="000001", start_date="20240101", end_date="20240131")
        print(f"   获取到 {len(hist_data)} 条历史数据")
        
        # 获取涨停板数据
        print("\n4. 获取涨停板数据...")
        zt_data = stock_zt_pool_em()
        print(f"   今日涨停股票: {len(zt_data)} 只")
        
        # 数据分析
        print("\n5. 数据分析...")
        if '涨跌幅' in spot_data.columns:
            up_stocks = len(spot_data[spot_data['涨跌幅'] > 0])
            print(f"   上涨股票: {up_stocks} 只")
        
        print("\n✅ 所有示例运行完成!")
        
    except AKShareAPIError as e:
        print(f"❌ API错误: {e}")
    except Exception as e:
        print(f"❌ 未知错误: {e}")

if __name__ == "__main__":
    main()
```

## ⚙️ 配置

### 环境要求

- **Python版本**: 3.7 及以上
- **依赖包**: requests, pandas, numpy, aktools
- **网络**: 需要网络连接获取数据

### API基础URL配置

```python
from akshare_api import AKShareAPI

# 使用默认URL(自动启动服务)
api = AKShareAPI()

# 自定义URL(自动启动服务)
api = AKShareAPI(base_url="http://127.0.0.1:8080")

# 禁用自动服务管理
api = AKShareAPI(auto_start_service=False)

# 使用远程服务
api = AKShareAPI(base_url="http://your-server:8080", auto_start_service=False)
```

## 🛠️ 开发

### 安装开发依赖

```bash
pip install -e ".[dev]"
```

### 运行测试

```bash
pytest
```

### 代码格式化

```bash
black akshare_api/
```

### 类型检查

```bash
mypy akshare_api/
```

## 📝 注意事项

### 数据源限制

- **新浪财经**: 重复运行函数会被暂时封IP,建议增加时间间隔
- **东方财富**: 数据质量高,访问无限制,推荐使用
- **腾讯证券**: 数据稳定,但接口相对较少

### 参数格式

- **日期格式**: 通常使用"YYYYMMDD"格式,如"20210301"
- **分时数据**: 使用"YYYY-MM-DD HH:MM:SS"格式
- **股票代码**: A股使用6位数字,如"000001"

### 复权数据说明

- **不复权**: 默认返回原始价格数据
- **前复权(qfq)**: 保持当前价格不变,调整历史价格
- **后复权(hfq)**: 保持历史价格不变,调整当前价格

## 🐛 常见问题

### Q: 首次使用需要手动安装AKTools吗?
A: **不需要!** 库会自动检测并安装最新版AKTools,无需手动操作。

### Q: 如何解决API连接失败?
A: 库会自动尝试重启服务,如果仍然失败,请检查:
1. 网络连接是否正常
2. 防火墙是否阻止了端口8080
3. 是否有其他程序占用了端口8080

### Q: 如何获取更多股票数据?
A: 可以使用批量获取的方式,注意控制请求频率:

```python
import time
from akshare_api import stock_zh_a_hist

symbols = ["000001", "000002", "600000"]
for symbol in symbols:
    data = stock_zh_a_hist(symbol=symbol, start_date="20240101", end_date="20240131")
    print(f"获取 {symbol} 数据完成")
    time.sleep(0.5)  # 避免请求过于频繁
```

### Q: 如何处理数据为空的情况?
A: 检查返回的DataFrame是否为空:

```python
from akshare_api import stock_zh_a_spot_em

data = stock_zh_a_spot_em()
if data.empty:
    print("未获取到数据")
else:
    print(f"获取到 {len(data)} 条数据")
```

### Q: 如何禁用自动服务管理?
A: 在创建API客户端时设置参数:

```python
from akshare_api import AKShareAPI

# 禁用自动服务管理
api = AKShareAPI(auto_start_service=False)
```

### Q: 如何查看服务状态?
A: 使用服务状态API:

```python
from akshare_api import AKShareAPI

api = AKShareAPI()
status = api.get_service_status()
print(f"服务状态: {status}")
```

### Q: 如何手动管理服务?
A: 使用服务管理方法:

```python
from akshare_api import AKShareAPI

api = AKShareAPI(auto_start_service=False)

# 启动服务
api.start_service()

# 重启服务
api.restart_service()

# 停止服务
api.stop_service()
```

## 🤝 贡献

欢迎对本项目提出建议或贡献代码:

1. Fork 本仓库
2. 创建您的特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交您的更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 打开一个 Pull Request

## 📄 许可证

本项目采用 MIT 许可证进行授权,详情请参阅 [LICENSE](LICENSE) 文件。

## 🙏 致谢

- 感谢 [AKShare](https://github.com/akfamily/akshare) 项目提供的数据接口
- 感谢 [AKTools](https://github.com/akfamily/aktools) 项目提供的API服务

## 📞 联系方式

- 项目地址:https://github.com/JoshuaMaoJH/akshare-api
- 问题反馈:https://github.com/JoshuaMaoJH/akshare-api/issues
- 文档地址:https://github.com/JoshuaMaoJH/akshare-api#readme

如有任何问题或建议,欢迎通过Issue与我们联系。

## 📈 更新日志

### v1.1.0 (2024-01-15)

**重大更新:自动服务管理功能**

#### ✨ 新增功能
- 🔧 **自动服务管理**: 自动安装和启动AKTools服务,无需手动配置
- 🔄 **智能重连**: 连接失败时自动重启服务并重试请求
- 🛠️ **服务管理API**: 提供完整的服务状态监控和管理功能
- 🖥️ **增强命令行工具**: 新增服务管理命令
- 📊 **服务状态监控**: 实时监控服务运行状态和响应时间

#### 🔧 技术改进
- 新增 `AKToolsServiceManager` 服务管理器类
- 集成自动服务管理到主API类
- 添加 `auto_start_service` 参数控制自动服务管理
- 完善错误处理和重试机制
- 支持跨平台服务管理

#### 📚 文档更新
- 更新README.md,添加自动服务管理说明
- 新增详细使用示例和常见问题解答
- 更新安装和使用指南

#### 🔄 向后兼容
- 所有原有API接口保持不变
- 函数式调用方式完全兼容
- 默认启用自动服务管理,可通过参数禁用

### v1.0.0 (2024-01-01)

**初始版本发布**

#### ✨ 新增功能
- 🎉 **完整接口库**: 包含所有98个AKShare接口
- 🌍 **多市场支持**: 支持A股、B股、港股、美股数据接口
- 🔥 **高级功能**: 涨停板、龙虎榜、机构调研、研报资讯等高级功能接口
- 📊 **接口统计**: 完整的接口分类统计和使用说明
- 🐍 **Python封装**: 面向对象和函数式两种调用方式
- 🛠️ **CLI工具**: 命令行工具支持接口列表和连接测试
- 📚 **完整文档**: 详细的API文档和使用示例

#### 📈 接口数量
- **A股数据接口**: 47个(市场总貌、实时行情、历史数据、分时数据等)
- **B股数据接口**: 4个(实时行情、历史数据、分时数据)
- **港股数据接口**: 3个(实时行情、历史数据)
- **美股数据接口**: 3个(实时行情、历史数据)
- **高级功能接口**: 36个(基本面、资金流向、概念板块等)
- **其他功能接口**: 5个(比较分析、特殊功能等)

---

**🎉 现在您可以直接使用AKShare API,无需任何手动配置!**

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/JoshuaMaoJH/akshare-api",
    "name": "akshare-api",
    "maintainer": "JMTechPower",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "JMTechPower <joshua.maojh@gmail.com>",
    "keywords": "akshare, stock, finance, api, data, trading, china, market",
    "author": "JMTechPower",
    "author_email": "JMTechPower <joshua.maojh@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/b3/b8/030dcda24dd1cfc80a0e4b8a0ad70ef118119d7dbbcc171cea06d52cf3fd/akshare_api-1.1.0.tar.gz",
    "platform": null,
    "description": "# AKShare API\r\n\r\n[![PyPI version](https://badge.fury.io/py/akshare-api.svg)](https://badge.fury.io/py/akshare-api)\r\n[![Python Support](https://img.shields.io/pypi/pyversions/akshare-api.svg)](https://pypi.org/project/akshare-api/)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\r\n[![Downloads](https://pepy.tech/badge/akshare-api)](https://pepy.tech/project/akshare-api)\r\n\r\n\u57fa\u4e8eAKTools\u516c\u5f00API\u7684AKShare\u80a1\u7968\u6570\u636e\u63a5\u53e3Python\u8c03\u7528\u5e93\uff0c\u63d0\u4f9b\u5b8c\u6574\u7684\u80a1\u7968\u6570\u636e\u83b7\u53d6\u529f\u80fd\u3002\r\n**\u652f\u6301\u81ea\u52a8\u5b89\u88c5\u548c\u542f\u52a8AKTools\u670d\u52a1\uff0c\u65e0\u9700\u624b\u52a8\u914d\u7f6e\uff01**\r\n\r\n## \u2728 \u7279\u6027\r\n\r\n- \ud83c\udfaf **\u63a5\u53e3\u5b8c\u6574**: \u6db5\u76d6AKShare\u6587\u6863\u4e2d\u6240\u6709\u80a1\u7968\u76f8\u5173\u7684\u6570\u636e\u63a5\u53e3\uff08\u517198\u4e2a\u63a5\u53e3\uff09\r\n- \ud83c\udf0d **\u5e02\u573a\u5168\u9762**: \u652f\u6301A\u80a1\u3001B\u80a1\u3001\u6e2f\u80a1\u3001\u7f8e\u80a1\u7b49\u591a\u4e2a\u5e02\u573a\r\n- \ud83d\udd25 **\u529f\u80fd\u4e30\u5bcc**: \u5305\u542b\u5b9e\u65f6\u884c\u60c5\u3001\u5386\u53f2\u6570\u636e\u3001\u57fa\u672c\u9762\u5206\u6790\u3001\u8d44\u91d1\u6d41\u5411\u7b49\u9ad8\u7ea7\u529f\u80fd\r\n- \ud83d\ude80 **\u8c03\u7528\u7b80\u4fbf**: \u901a\u8fc7\u5c01\u88c5\u7684Python\u65b9\u6cd5\uff0c\u4e00\u884c\u4ee3\u7801\u5373\u53ef\u83b7\u53d6\u6570\u636e\r\n- \u2699\ufe0f **\u53c2\u6570\u7075\u6d3b**: \u652f\u6301\u591a\u79cd\u53c2\u6570\u914d\u7f6e\uff0c\u6ee1\u8db3\u4e0d\u540c\u5206\u6790\u9700\u6c42\r\n- \ud83d\udee1\ufe0f **\u9519\u8bef\u5904\u7406**: \u5185\u7f6e\u5f02\u5e38\u5904\u7406\u673a\u5236\uff0c\u786e\u4fdd\u7a0b\u5e8f\u7a33\u5b9a\u8fd0\u884c\r\n- \ud83d\udcca **\u6570\u636e\u683c\u5f0f**: \u7edf\u4e00\u8fd4\u56depandas.DataFrame\u683c\u5f0f\uff0c\u4fbf\u4e8e\u6570\u636e\u5206\u6790\r\n- \ud83d\udcda **\u6587\u6863\u8be6\u7ec6**: \u6bcf\u4e2a\u63a5\u53e3\u90fd\u5305\u542b\u5b8c\u6574\u7684\u53c2\u6570\u8bf4\u660e\u548c\u4f7f\u7528\u793a\u4f8b\r\n- \ud83d\udd27 **\u81ea\u52a8\u670d\u52a1\u7ba1\u7406**: \u81ea\u52a8\u5b89\u88c5\u548c\u542f\u52a8AKTools\u670d\u52a1\uff0c\u65e0\u9700\u624b\u52a8\u914d\u7f6e\r\n- \ud83d\udd04 **\u667a\u80fd\u91cd\u8fde**: \u8fde\u63a5\u5931\u8d25\u65f6\u81ea\u52a8\u91cd\u542f\u670d\u52a1\u5e76\u91cd\u8bd5\u8bf7\u6c42\r\n\r\n## \ud83d\udce6 \u5b89\u88c5\r\n\r\n### \u4ecePyPI\u5b89\u88c5\uff08\u63a8\u8350\uff09\r\n\r\n```bash\r\npip install akshare-api\r\n```\r\n\r\n### \u4ece\u6e90\u7801\u5b89\u88c5\r\n\r\n```bash\r\ngit clone https://github.com/JoshuaMaoJH/akshare-api.git\r\ncd akshare-api\r\npip install -e .\r\n```\r\n\r\n## \ud83d\ude80 \u5feb\u901f\u5f00\u59cb\r\n\r\n### \u57fa\u7840\u4f7f\u7528\uff08\u63a8\u8350\uff09\r\n\r\n```python\r\nfrom akshare_api import stock_zh_a_spot_em, stock_zh_a_hist\r\n\r\n# \u83b7\u53d6A\u80a1\u5b9e\u65f6\u884c\u60c5\uff08\u81ea\u52a8\u542f\u52a8AKTools\u670d\u52a1\uff09\r\nspot_data = stock_zh_a_spot_em()\r\nprint(f\"\u5171\u83b7\u53d6\u5230 {len(spot_data)} \u53ea\u80a1\u7968\u6570\u636e\")\r\n\r\n# \u83b7\u53d6\u5386\u53f2\u884c\u60c5\u6570\u636e\r\nhist_data = stock_zh_a_hist(symbol=\"000001\", start_date=\"20240101\", end_date=\"20240131\")\r\nprint(hist_data.head())\r\n```\r\n\r\n### \u9762\u5411\u5bf9\u8c61\u4f7f\u7528\r\n\r\n```python\r\nfrom akshare_api import AKShareAPI\r\n\r\n# \u521b\u5efaAPI\u5ba2\u6237\u7aef\uff08\u81ea\u52a8\u542f\u52a8AKTools\u670d\u52a1\uff09\r\napi = AKShareAPI(base_url=\"http://127.0.0.1:8080\")\r\n\r\n# \u83b7\u53d6\u6570\u636e\r\ndata = api.stock_zh_a_spot_em()\r\nprint(data.head())\r\n\r\n# \u67e5\u770b\u670d\u52a1\u72b6\u6001\r\nstatus = api.get_service_status()\r\nprint(f\"\u670d\u52a1\u72b6\u6001: {status}\")\r\n```\r\n\r\n### \u624b\u52a8\u670d\u52a1\u7ba1\u7406\r\n\r\n```python\r\nfrom akshare_api import AKShareAPI\r\n\r\n# \u7981\u7528\u81ea\u52a8\u670d\u52a1\u7ba1\u7406\r\napi = AKShareAPI(auto_start_service=False)\r\n\r\n# \u624b\u52a8\u7ba1\u7406\u670d\u52a1\r\napi.start_service()  # \u542f\u52a8\u670d\u52a1\r\napi.restart_service()  # \u91cd\u542f\u670d\u52a1\r\napi.stop_service()  # \u505c\u6b62\u670d\u52a1\r\n```\r\n\r\n### \u547d\u4ee4\u884c\u5de5\u5177\r\n\r\n```bash\r\n# \u6d4b\u8bd5API\u8fde\u63a5\uff08\u81ea\u52a8\u542f\u52a8\u670d\u52a1\uff09\r\nakshare-api --test-connection\r\n\r\n# \u5217\u51fa\u6240\u6709\u53ef\u7528\u63a5\u53e3\r\nakshare-api --list-interfaces\r\n\r\n# \u670d\u52a1\u7ba1\u7406\r\nakshare-api --start-service      # \u542f\u52a8\u670d\u52a1\r\nakshare-api --stop-service       # \u505c\u6b62\u670d\u52a1\r\nakshare-api --restart-service    # \u91cd\u542f\u670d\u52a1\r\nakshare-api --service-status     # \u67e5\u770b\u670d\u52a1\u72b6\u6001\r\n\r\n# \u6307\u5b9aAPI\u57fa\u7840URL\r\nakshare-api --base-url http://localhost:8080 --test-connection\r\n```\r\n\r\n## \ud83d\udcca \u652f\u6301\u7684\u63a5\u53e3\r\n\r\n### \u63a5\u53e3\u7edf\u8ba1\u603b\u89c8\r\n\r\n| \u5206\u7c7b | \u63a5\u53e3\u6570\u91cf | \u8bf4\u660e |\r\n|------|----------|------|\r\n| **A\u80a1\u6570\u636e\u63a5\u53e3** | 47\u4e2a | \u5305\u542b\u5e02\u573a\u603b\u8c8c\u3001\u4e2a\u80a1\u4fe1\u606f\u3001\u5b9e\u65f6\u884c\u60c5\u3001\u5386\u53f2\u6570\u636e\u3001\u5206\u65f6\u6570\u636e\u7b49 |\r\n| **B\u80a1\u6570\u636e\u63a5\u53e3** | 4\u4e2a | B\u80a1\u5b9e\u65f6\u884c\u60c5\u3001\u5386\u53f2\u6570\u636e\u3001\u5206\u65f6\u6570\u636e |\r\n| **\u6e2f\u80a1\u6570\u636e\u63a5\u53e3** | 3\u4e2a | \u6e2f\u80a1\u5b9e\u65f6\u884c\u60c5\u3001\u5386\u53f2\u6570\u636e |\r\n| **\u7f8e\u80a1\u6570\u636e\u63a5\u53e3** | 3\u4e2a | \u7f8e\u80a1\u5b9e\u65f6\u884c\u60c5\u3001\u5386\u53f2\u6570\u636e |\r\n| **\u9ad8\u7ea7\u529f\u80fd\u63a5\u53e3** | 36\u4e2a | \u57fa\u672c\u9762\u6570\u636e\u3001\u8d44\u91d1\u6d41\u5411\u3001\u6982\u5ff5\u677f\u5757\u3001\u884c\u4e1a\u5206\u6790\u7b49 |\r\n| **\u5176\u4ed6\u529f\u80fd\u63a5\u53e3** | 5\u4e2a | \u80a1\u7968\u6bd4\u8f83\u5206\u6790\u76f8\u5173\u63a5\u53e3 |\r\n| **\u603b\u8ba1** | **98\u4e2a** | **\u5b8c\u6574\u7684\u80a1\u7968\u6570\u636e\u63a5\u53e3\u5e93** |\r\n\r\n### \ud83c\udfe2 A\u80a1\u6570\u636e\u63a5\u53e3 (47\u4e2a)\r\n\r\n#### \u5e02\u573a\u603b\u8c8c (5\u4e2a)\r\n- `stock_sse_summary()` - \u4e0a\u6d77\u8bc1\u5238\u4ea4\u6613\u6240\u603b\u8c8c\u6570\u636e\r\n- `stock_szse_summary()` - \u6df1\u5733\u8bc1\u5238\u4ea4\u6613\u6240\u603b\u8c8c\u6570\u636e\r\n- `stock_szse_area_summary()` - \u6df1\u5733\u8bc1\u5238\u4ea4\u6613\u6240\u5730\u533a\u4ea4\u6613\u6392\u5e8f\r\n- `stock_szse_sector_summary()` - \u6df1\u5733\u8bc1\u5238\u4ea4\u6613\u6240\u80a1\u7968\u884c\u4e1a\u6210\u4ea4\u6570\u636e\r\n- `stock_sse_deal_daily()` - \u4e0a\u6d77\u8bc1\u5238\u4ea4\u6613\u6240\u6bcf\u65e5\u6982\u51b5\u6570\u636e\r\n\r\n#### \u4e2a\u80a1\u4fe1\u606f\u67e5\u8be2 (2\u4e2a)\r\n- `stock_individual_info_em()` - \u4e2a\u80a1\u4fe1\u606f\u67e5\u8be2-\u4e1c\u65b9\u8d22\u5bcc\r\n- `stock_individual_basic_info_xq()` - \u4e2a\u80a1\u4fe1\u606f\u67e5\u8be2-\u96ea\u7403\r\n\r\n#### \u5b9e\u65f6\u884c\u60c5\u6570\u636e (10\u4e2a)\r\n- `stock_zh_a_spot_em()` - \u6caa\u6df1\u4eacA\u80a1\u5b9e\u65f6\u884c\u60c5-\u4e1c\u65b9\u8d22\u5bcc\r\n- `stock_sh_a_spot_em()` - \u6caaA\u80a1\u5b9e\u65f6\u884c\u60c5-\u4e1c\u65b9\u8d22\u5bcc\r\n- `stock_sz_a_spot_em()` - \u6df1A\u80a1\u5b9e\u65f6\u884c\u60c5-\u4e1c\u65b9\u8d22\u5bcc\r\n- `stock_bj_a_spot_em()` - \u4eacA\u80a1\u5b9e\u65f6\u884c\u60c5-\u4e1c\u65b9\u8d22\u5bcc\r\n- `stock_new_a_spot_em()` - \u65b0\u80a1\u5b9e\u65f6\u884c\u60c5-\u4e1c\u65b9\u8d22\u5bcc\r\n- `stock_cy_a_spot_em()` - \u521b\u4e1a\u677f\u5b9e\u65f6\u884c\u60c5-\u4e1c\u65b9\u8d22\u5bcc\r\n- `stock_kc_a_spot_em()` - \u79d1\u521b\u677f\u5b9e\u65f6\u884c\u60c5-\u4e1c\u65b9\u8d22\u5bcc\r\n- `stock_zh_ab_comparison_em()` - AB\u80a1\u6bd4\u4ef7-\u4e1c\u65b9\u8d22\u5bcc\r\n- `stock_zh_a_spot()` - \u6caa\u6df1\u4eacA\u80a1\u5b9e\u65f6\u884c\u60c5-\u65b0\u6d6a\r\n- `stock_individual_spot_xq()` - \u4e2a\u80a1\u5b9e\u65f6\u884c\u60c5-\u96ea\u7403\r\n\r\n#### \u5386\u53f2\u884c\u60c5\u6570\u636e (3\u4e2a)\r\n- `stock_zh_a_hist()` - \u5386\u53f2\u884c\u60c5\u6570\u636e-\u4e1c\u65b9\u8d22\u5bcc\r\n- `stock_zh_a_daily()` - \u5386\u53f2\u884c\u60c5\u6570\u636e-\u65b0\u6d6a\r\n- `stock_zh_a_hist_tx()` - \u5386\u53f2\u884c\u60c5\u6570\u636e-\u817e\u8baf\r\n\r\n#### \u5206\u65f6\u6570\u636e (5\u4e2a)\r\n- `stock_zh_a_minute()` - \u5206\u65f6\u6570\u636e-\u65b0\u6d6a\r\n- `stock_zh_a_hist_min_em()` - \u5206\u65f6\u6570\u636e-\u4e1c\u65b9\u8d22\u5bcc\r\n- `stock_intraday_em()` - \u65e5\u5185\u5206\u65f6\u6570\u636e-\u4e1c\u65b9\u8d22\u5bcc\r\n- `stock_intraday_sina()` - \u65e5\u5185\u5206\u65f6\u6570\u636e-\u65b0\u6d6a\r\n- `stock_zh_a_hist_pre_min_em()` - \u76d8\u524d\u6570\u636e-\u4e1c\u65b9\u8d22\u5bcc\r\n\r\n### \ud83c\udf0d \u5176\u4ed6\u5e02\u573a\u6570\u636e\u63a5\u53e3\r\n\r\n#### B\u80a1\u6570\u636e\u63a5\u53e3 (4\u4e2a)\r\n- `stock_zh_b_spot_em()` - B\u80a1\u5b9e\u65f6\u884c\u60c5-\u4e1c\u65b9\u8d22\u5bcc\r\n- `stock_zh_b_spot()` - B\u80a1\u5b9e\u65f6\u884c\u60c5-\u65b0\u6d6a\r\n- `stock_zh_b_daily()` - B\u80a1\u5386\u53f2\u884c\u60c5\u6570\u636e-\u65b0\u6d6a\r\n- `stock_zh_b_minute()` - B\u80a1\u5206\u65f6\u6570\u636e-\u65b0\u6d6a\r\n\r\n#### \u6e2f\u80a1\u6570\u636e\u63a5\u53e3 (3\u4e2a)\r\n- `stock_hk_spot_em()` - \u6e2f\u80a1\u5b9e\u65f6\u884c\u60c5-\u4e1c\u65b9\u8d22\u5bcc\r\n- `stock_hk_spot()` - \u6e2f\u80a1\u5b9e\u65f6\u884c\u60c5-\u65b0\u6d6a\r\n- `stock_hk_daily()` - \u6e2f\u80a1\u5386\u53f2\u884c\u60c5\u6570\u636e-\u65b0\u6d6a\r\n\r\n#### \u7f8e\u80a1\u6570\u636e\u63a5\u53e3 (3\u4e2a)\r\n- `stock_us_spot()` - \u7f8e\u80a1\u5b9e\u65f6\u884c\u60c5-\u65b0\u6d6a\r\n- `stock_us_spot_em()` - \u7f8e\u80a1\u5b9e\u65f6\u884c\u60c5-\u4e1c\u65b9\u8d22\u5bcc\r\n- `stock_us_daily()` - \u7f8e\u80a1\u5386\u53f2\u884c\u60c5\u6570\u636e-\u65b0\u6d6a\r\n\r\n### \ud83d\udd25 \u9ad8\u7ea7\u529f\u80fd\u63a5\u53e3 (36\u4e2a)\r\n\r\n#### \u6da8\u505c\u677f\u884c\u60c5 (3\u4e2a)\r\n- `stock_zt_pool_em()` - \u6da8\u505c\u80a1\u6c60\r\n- `stock_zt_pool_previous_em()` - \u6628\u65e5\u6da8\u505c\u80a1\u6c60\r\n- `stock_dt_pool_em()` - \u8dcc\u505c\u80a1\u6c60\r\n\r\n#### \u9f99\u864e\u699c (2\u4e2a)\r\n- `stock_lhb_detail_em()` - \u9f99\u864e\u699c\u8be6\u60c5\r\n- `stock_lhb_stock_statistic_em()` - \u4e2a\u80a1\u4e0a\u699c\u7edf\u8ba1\r\n\r\n#### \u673a\u6784\u76f8\u5173 (5\u4e2a)\r\n- `stock_institute_visit_em()` - \u673a\u6784\u8c03\u7814\u7edf\u8ba1\r\n- `stock_institute_visit_detail_em()` - \u673a\u6784\u8c03\u7814\u8be6\u7ec6\r\n- `stock_institute_hold_detail()` - \u673a\u6784\u6301\u80a1\u8be6\u60c5\r\n- `stock_institute_recommend()` - \u673a\u6784\u63a8\u8350\u6c60\r\n- `stock_institute_recommend_detail()` - \u80a1\u7968\u8bc4\u7ea7\u8bb0\u5f55\r\n\r\n#### \u7814\u62a5\u8d44\u8baf (6\u4e2a)\r\n- `stock_research_report_em()` - \u4e2a\u80a1\u7814\u62a5\r\n- `stock_info_cjzc_em()` - \u8d22\u7ecf\u65e9\u9910\r\n- `stock_info_global_em()` - \u5168\u7403\u8d22\u7ecf\u5feb\u8baf-\u4e1c\u65b9\u8d22\u5bcc\r\n- `stock_info_global_sina()` - \u5168\u7403\u8d22\u7ecf\u5feb\u8baf-\u65b0\u6d6a\u8d22\u7ecf\r\n- `stock_news_em()` - \u4e2a\u80a1\u65b0\u95fb-\u4e1c\u65b9\u8d22\u5bcc\r\n- `stock_news_main_cx()` - \u8d22\u7ecf\u5185\u5bb9\u7cbe\u9009-\u8d22\u65b0\u7f51\r\n\r\n## \ud83d\udcd6 \u8be6\u7ec6\u4f7f\u7528\u8bf4\u660e\r\n\r\n### \ud83d\udd27 \u670d\u52a1\u7ba1\u7406API\r\n\r\n#### \u670d\u52a1\u72b6\u6001\u7ba1\u7406\r\n\r\n```python\r\nfrom akshare_api import AKShareAPI\r\n\r\napi = AKShareAPI()\r\n\r\n# \u83b7\u53d6\u670d\u52a1\u72b6\u6001\r\nstatus = api.get_service_status()\r\nprint(f\"\u670d\u52a1\u8fd0\u884c\u72b6\u6001: {status['running']}\")\r\nprint(f\"\u670d\u52a1\u7aef\u53e3: {status['port']}\")\r\nprint(f\"\u57fa\u7840URL: {status['base_url']}\")\r\nif status['response_time']:\r\n    print(f\"\u54cd\u5e94\u65f6\u95f4: {status['response_time']:.2f}ms\")\r\n\r\n# \u91cd\u542f\u670d\u52a1\r\nif api.restart_service():\r\n    print(\"\u670d\u52a1\u91cd\u542f\u6210\u529f\")\r\nelse:\r\n    print(\"\u670d\u52a1\u91cd\u542f\u5931\u8d25\")\r\n\r\n# \u505c\u6b62\u670d\u52a1\r\napi.stop_service()\r\nprint(\"\u670d\u52a1\u5df2\u505c\u6b62\")\r\n```\r\n\r\n#### \u5168\u5c40\u670d\u52a1\u7ba1\u7406\r\n\r\n```python\r\nfrom akshare_api.service_manager import get_service_manager, ensure_service_running\r\n\r\n# \u83b7\u53d6\u5168\u5c40\u670d\u52a1\u7ba1\u7406\u5668\r\nmanager = get_service_manager(port=8080, auto_start=True)\r\n\r\n# \u786e\u4fdd\u670d\u52a1\u6b63\u5728\u8fd0\u884c\r\nif ensure_service_running(port=8080):\r\n    print(\"\u670d\u52a1\u6b63\u5728\u8fd0\u884c\")\r\nelse:\r\n    print(\"\u670d\u52a1\u542f\u52a8\u5931\u8d25\")\r\n```\r\n\r\n### \ud83d\udcca \u9ad8\u7ea7\u529f\u80fd\u793a\u4f8b\r\n\r\n#### \u6da8\u505c\u677f\u6570\u636e\r\n\r\n```python\r\nfrom akshare_api import stock_zt_pool_em, stock_zt_pool_previous_em, stock_dt_pool_em\r\n\r\n# \u83b7\u53d6\u6da8\u505c\u80a1\u6c60\r\nzt_data = stock_zt_pool_em()\r\nprint(f\"\u4eca\u65e5\u6da8\u505c\u80a1\u7968: {len(zt_data)} \u53ea\")\r\n\r\n# \u83b7\u53d6\u6628\u65e5\u6da8\u505c\u80a1\u6c60\r\nprev_zt_data = stock_zt_pool_previous_em()\r\nprint(f\"\u6628\u65e5\u6da8\u505c\u80a1\u7968: {len(prev_zt_data)} \u53ea\")\r\n\r\n# \u83b7\u53d6\u8dcc\u505c\u80a1\u6c60\r\ndt_data = stock_dt_pool_em()\r\nprint(f\"\u4eca\u65e5\u8dcc\u505c\u80a1\u7968: {len(dt_data)} \u53ea\")\r\n```\r\n\r\n#### \u9f99\u864e\u699c\u6570\u636e\r\n\r\n```python\r\nfrom akshare_api import stock_lhb_detail_em, stock_lhb_stock_statistic_em\r\n\r\n# \u83b7\u53d6\u9f99\u864e\u699c\u8be6\u60c5\r\nlhb_detail = stock_lhb_detail_em(\r\n    start_date=\"20240403\", \r\n    end_date=\"20240417\"\r\n)\r\n\r\n# \u83b7\u53d6\u4e2a\u80a1\u4e0a\u699c\u7edf\u8ba1\r\nlhb_stats = stock_lhb_stock_statistic_em()\r\n```\r\n\r\n#### \u673a\u6784\u76f8\u5173\u6570\u636e\r\n\r\n```python\r\nfrom akshare_api import stock_institute_visit_em, stock_institute_recommend\r\n\r\n# \u83b7\u53d6\u673a\u6784\u8c03\u7814\u7edf\u8ba1\r\ninstitute_visit = stock_institute_visit_em()\r\n\r\n# \u83b7\u53d6\u673a\u6784\u63a8\u8350\u6c60\r\ninstitute_recommend = stock_institute_recommend(symbol=\"000001\")\r\n```\r\n\r\n#### \u5206\u65f6\u6570\u636e\r\n\r\n```python\r\nfrom akshare_api import stock_zh_a_hist_min_em, stock_intraday_em\r\n\r\n# \u83b7\u53d6\u5206\u65f6\u6570\u636e\r\nminute_data = stock_zh_a_hist_min_em(\r\n    symbol=\"000001\",\r\n    period=\"1\",\r\n    start_date=\"2024-01-01 09:30:00\",\r\n    end_date=\"2024-01-01 15:00:00\"\r\n)\r\n\r\n# \u83b7\u53d6\u65e5\u5185\u5206\u65f6\u6570\u636e\r\nintraday_data = stock_intraday_em(symbol=\"000001\")\r\n```\r\n\r\n### \ud83d\udcbe \u6570\u636e\u4fdd\u5b58\u793a\u4f8b\r\n\r\n```python\r\nfrom akshare_api import stock_zh_a_spot_em\r\n\r\n# \u83b7\u53d6\u6570\u636e\r\nspot_data = stock_zh_a_spot_em()\r\n\r\n# \u4fdd\u5b58\u4e3aCSV\u6587\u4ef6\r\nspot_data.to_csv('stock_data.csv', index=False, encoding='utf-8-sig')\r\n\r\n# \u4fdd\u5b58\u4e3aExcel\u6587\u4ef6\r\nspot_data.to_excel('stock_data.xlsx', index=False)\r\n\r\n# \u4fdd\u5b58\u4e3aJSON\u6587\u4ef6\r\nspot_data.to_json('stock_data.json', orient='records', force_ascii=False, indent=2)\r\n```\r\n\r\n### \ud83d\udd04 \u6279\u91cf\u6570\u636e\u83b7\u53d6\r\n\r\n```python\r\nimport time\r\nfrom akshare_api import stock_zh_a_hist\r\n\r\ndef batch_get_stock_data(symbols, start_date, end_date):\r\n    \"\"\"\u6279\u91cf\u83b7\u53d6\u591a\u53ea\u80a1\u7968\u7684\u5386\u53f2\u6570\u636e\"\"\"\r\n    results = {}\r\n    for symbol in symbols:\r\n        try:\r\n            df = stock_zh_a_hist(symbol=symbol, start_date=start_date, end_date=end_date)\r\n            results[symbol] = df\r\n            print(f\"\u6210\u529f\u83b7\u53d6 {symbol} \u7684\u6570\u636e\uff0c\u5171 {len(df)} \u6761\u8bb0\u5f55\")\r\n            time.sleep(0.5)  # \u907f\u514d\u8bf7\u6c42\u8fc7\u4e8e\u9891\u7e41\r\n        except Exception as e:\r\n            print(f\"\u83b7\u53d6 {symbol} \u6570\u636e\u5931\u8d25: {e}\")\r\n    return results\r\n\r\n# \u4f7f\u7528\u793a\u4f8b\r\nsymbols = [\"000001\", \"000002\", \"600000\", \"600036\"]\r\ndata_dict = batch_get_stock_data(symbols, \"20240101\", \"20240131\")\r\n```\r\n\r\n### \ud83d\udee1\ufe0f \u9519\u8bef\u5904\u7406\r\n\r\n```python\r\nfrom akshare_api import stock_zh_a_spot_em, AKShareAPIError\r\n\r\ntry:\r\n    data = stock_zh_a_spot_em()\r\n    if data.empty:\r\n        print(\"\u672a\u83b7\u53d6\u5230\u6570\u636e\")\r\n    else:\r\n        print(f\"\u83b7\u53d6\u5230 {len(data)} \u6761\u6570\u636e\")\r\nexcept AKShareAPIError as e:\r\n    print(f\"API\u9519\u8bef: {e}\")\r\n    print(\"\u63d0\u793a: \u670d\u52a1\u4f1a\u81ea\u52a8\u5c1d\u8bd5\u91cd\u542f\")\r\nexcept Exception as e:\r\n    print(f\"\u672a\u77e5\u9519\u8bef: {e}\")\r\n```\r\n\r\n### \ud83c\udfaf \u5b8c\u6574\u793a\u4f8b\r\n\r\n```python\r\n#!/usr/bin/env python3\r\n# -*- coding: utf-8 -*-\r\n\"\"\"\r\nAKShare API \u5b8c\u6574\u4f7f\u7528\u793a\u4f8b\r\n\"\"\"\r\n\r\nfrom akshare_api import (\r\n    stock_zh_a_spot_em,\r\n    stock_zh_a_hist,\r\n    stock_sse_summary,\r\n    stock_zt_pool_em,\r\n    AKShareAPI,\r\n    AKShareAPIError\r\n)\r\n\r\ndef main():\r\n    \"\"\"\u4e3b\u51fd\u6570\"\"\"\r\n    print(\"=== AKShare API \u5b8c\u6574\u4f7f\u7528\u793a\u4f8b ===\\n\")\r\n    \r\n    try:\r\n        # 1. \u57fa\u7840\u4f7f\u7528 - \u81ea\u52a8\u542f\u52a8\u670d\u52a1\r\n        print(\"1. \u83b7\u53d6A\u80a1\u5b9e\u65f6\u884c\u60c5...\")\r\n        spot_data = stock_zh_a_spot_em()\r\n        print(f\"   \u83b7\u53d6\u5230 {len(spot_data)} \u53ea\u80a1\u7968\u6570\u636e\")\r\n        \r\n        # 2. \u9762\u5411\u5bf9\u8c61\u4f7f\u7528\r\n        print(\"\\n2. \u9762\u5411\u5bf9\u8c61\u4f7f\u7528...\")\r\n        api = AKShareAPI()\r\n        \r\n        # \u67e5\u770b\u670d\u52a1\u72b6\u6001\r\n        status = api.get_service_status()\r\n        print(f\"   \u670d\u52a1\u72b6\u6001: {'\u8fd0\u884c\u4e2d' if status['running'] else '\u672a\u8fd0\u884c'}\")\r\n        \r\n        # \u83b7\u53d6\u5386\u53f2\u6570\u636e\r\n        print(\"\\n3. \u83b7\u53d6\u5386\u53f2\u6570\u636e...\")\r\n        hist_data = stock_zh_a_hist(symbol=\"000001\", start_date=\"20240101\", end_date=\"20240131\")\r\n        print(f\"   \u83b7\u53d6\u5230 {len(hist_data)} \u6761\u5386\u53f2\u6570\u636e\")\r\n        \r\n        # \u83b7\u53d6\u6da8\u505c\u677f\u6570\u636e\r\n        print(\"\\n4. \u83b7\u53d6\u6da8\u505c\u677f\u6570\u636e...\")\r\n        zt_data = stock_zt_pool_em()\r\n        print(f\"   \u4eca\u65e5\u6da8\u505c\u80a1\u7968: {len(zt_data)} \u53ea\")\r\n        \r\n        # \u6570\u636e\u5206\u6790\r\n        print(\"\\n5. \u6570\u636e\u5206\u6790...\")\r\n        if '\u6da8\u8dcc\u5e45' in spot_data.columns:\r\n            up_stocks = len(spot_data[spot_data['\u6da8\u8dcc\u5e45'] > 0])\r\n            print(f\"   \u4e0a\u6da8\u80a1\u7968: {up_stocks} \u53ea\")\r\n        \r\n        print(\"\\n\u2705 \u6240\u6709\u793a\u4f8b\u8fd0\u884c\u5b8c\u6210\uff01\")\r\n        \r\n    except AKShareAPIError as e:\r\n        print(f\"\u274c API\u9519\u8bef: {e}\")\r\n    except Exception as e:\r\n        print(f\"\u274c \u672a\u77e5\u9519\u8bef: {e}\")\r\n\r\nif __name__ == \"__main__\":\r\n    main()\r\n```\r\n\r\n## \u2699\ufe0f \u914d\u7f6e\r\n\r\n### \u73af\u5883\u8981\u6c42\r\n\r\n- **Python\u7248\u672c**: 3.7 \u53ca\u4ee5\u4e0a\r\n- **\u4f9d\u8d56\u5305**: requests, pandas, numpy, aktools\r\n- **\u7f51\u7edc**: \u9700\u8981\u7f51\u7edc\u8fde\u63a5\u83b7\u53d6\u6570\u636e\r\n\r\n### API\u57fa\u7840URL\u914d\u7f6e\r\n\r\n```python\r\nfrom akshare_api import AKShareAPI\r\n\r\n# \u4f7f\u7528\u9ed8\u8ba4URL\uff08\u81ea\u52a8\u542f\u52a8\u670d\u52a1\uff09\r\napi = AKShareAPI()\r\n\r\n# \u81ea\u5b9a\u4e49URL\uff08\u81ea\u52a8\u542f\u52a8\u670d\u52a1\uff09\r\napi = AKShareAPI(base_url=\"http://127.0.0.1:8080\")\r\n\r\n# \u7981\u7528\u81ea\u52a8\u670d\u52a1\u7ba1\u7406\r\napi = AKShareAPI(auto_start_service=False)\r\n\r\n# \u4f7f\u7528\u8fdc\u7a0b\u670d\u52a1\r\napi = AKShareAPI(base_url=\"http://your-server:8080\", auto_start_service=False)\r\n```\r\n\r\n## \ud83d\udee0\ufe0f \u5f00\u53d1\r\n\r\n### \u5b89\u88c5\u5f00\u53d1\u4f9d\u8d56\r\n\r\n```bash\r\npip install -e \".[dev]\"\r\n```\r\n\r\n### \u8fd0\u884c\u6d4b\u8bd5\r\n\r\n```bash\r\npytest\r\n```\r\n\r\n### \u4ee3\u7801\u683c\u5f0f\u5316\r\n\r\n```bash\r\nblack akshare_api/\r\n```\r\n\r\n### \u7c7b\u578b\u68c0\u67e5\r\n\r\n```bash\r\nmypy akshare_api/\r\n```\r\n\r\n## \ud83d\udcdd \u6ce8\u610f\u4e8b\u9879\r\n\r\n### \u6570\u636e\u6e90\u9650\u5236\r\n\r\n- **\u65b0\u6d6a\u8d22\u7ecf**: \u91cd\u590d\u8fd0\u884c\u51fd\u6570\u4f1a\u88ab\u6682\u65f6\u5c01IP\uff0c\u5efa\u8bae\u589e\u52a0\u65f6\u95f4\u95f4\u9694\r\n- **\u4e1c\u65b9\u8d22\u5bcc**: \u6570\u636e\u8d28\u91cf\u9ad8\uff0c\u8bbf\u95ee\u65e0\u9650\u5236\uff0c\u63a8\u8350\u4f7f\u7528\r\n- **\u817e\u8baf\u8bc1\u5238**: \u6570\u636e\u7a33\u5b9a\uff0c\u4f46\u63a5\u53e3\u76f8\u5bf9\u8f83\u5c11\r\n\r\n### \u53c2\u6570\u683c\u5f0f\r\n\r\n- **\u65e5\u671f\u683c\u5f0f**: \u901a\u5e38\u4f7f\u7528\"YYYYMMDD\"\u683c\u5f0f\uff0c\u5982\"20210301\"\r\n- **\u5206\u65f6\u6570\u636e**: \u4f7f\u7528\"YYYY-MM-DD HH:MM:SS\"\u683c\u5f0f\r\n- **\u80a1\u7968\u4ee3\u7801**: A\u80a1\u4f7f\u75286\u4f4d\u6570\u5b57\uff0c\u5982\"000001\"\r\n\r\n### \u590d\u6743\u6570\u636e\u8bf4\u660e\r\n\r\n- **\u4e0d\u590d\u6743**: \u9ed8\u8ba4\u8fd4\u56de\u539f\u59cb\u4ef7\u683c\u6570\u636e\r\n- **\u524d\u590d\u6743(qfq)**: \u4fdd\u6301\u5f53\u524d\u4ef7\u683c\u4e0d\u53d8\uff0c\u8c03\u6574\u5386\u53f2\u4ef7\u683c\r\n- **\u540e\u590d\u6743(hfq)**: \u4fdd\u6301\u5386\u53f2\u4ef7\u683c\u4e0d\u53d8\uff0c\u8c03\u6574\u5f53\u524d\u4ef7\u683c\r\n\r\n## \ud83d\udc1b \u5e38\u89c1\u95ee\u9898\r\n\r\n### Q: \u9996\u6b21\u4f7f\u7528\u9700\u8981\u624b\u52a8\u5b89\u88c5AKTools\u5417\uff1f\r\nA: **\u4e0d\u9700\u8981\uff01** \u5e93\u4f1a\u81ea\u52a8\u68c0\u6d4b\u5e76\u5b89\u88c5\u6700\u65b0\u7248AKTools\uff0c\u65e0\u9700\u624b\u52a8\u64cd\u4f5c\u3002\r\n\r\n### Q: \u5982\u4f55\u89e3\u51b3API\u8fde\u63a5\u5931\u8d25\uff1f\r\nA: \u5e93\u4f1a\u81ea\u52a8\u5c1d\u8bd5\u91cd\u542f\u670d\u52a1\uff0c\u5982\u679c\u4ecd\u7136\u5931\u8d25\uff0c\u8bf7\u68c0\u67e5\uff1a\r\n1. \u7f51\u7edc\u8fde\u63a5\u662f\u5426\u6b63\u5e38\r\n2. \u9632\u706b\u5899\u662f\u5426\u963b\u6b62\u4e86\u7aef\u53e38080\r\n3. \u662f\u5426\u6709\u5176\u4ed6\u7a0b\u5e8f\u5360\u7528\u4e86\u7aef\u53e38080\r\n\r\n### Q: \u5982\u4f55\u83b7\u53d6\u66f4\u591a\u80a1\u7968\u6570\u636e\uff1f\r\nA: \u53ef\u4ee5\u4f7f\u7528\u6279\u91cf\u83b7\u53d6\u7684\u65b9\u5f0f\uff0c\u6ce8\u610f\u63a7\u5236\u8bf7\u6c42\u9891\u7387\uff1a\r\n\r\n```python\r\nimport time\r\nfrom akshare_api import stock_zh_a_hist\r\n\r\nsymbols = [\"000001\", \"000002\", \"600000\"]\r\nfor symbol in symbols:\r\n    data = stock_zh_a_hist(symbol=symbol, start_date=\"20240101\", end_date=\"20240131\")\r\n    print(f\"\u83b7\u53d6 {symbol} \u6570\u636e\u5b8c\u6210\")\r\n    time.sleep(0.5)  # \u907f\u514d\u8bf7\u6c42\u8fc7\u4e8e\u9891\u7e41\r\n```\r\n\r\n### Q: \u5982\u4f55\u5904\u7406\u6570\u636e\u4e3a\u7a7a\u7684\u60c5\u51b5\uff1f\r\nA: \u68c0\u67e5\u8fd4\u56de\u7684DataFrame\u662f\u5426\u4e3a\u7a7a\uff1a\r\n\r\n```python\r\nfrom akshare_api import stock_zh_a_spot_em\r\n\r\ndata = stock_zh_a_spot_em()\r\nif data.empty:\r\n    print(\"\u672a\u83b7\u53d6\u5230\u6570\u636e\")\r\nelse:\r\n    print(f\"\u83b7\u53d6\u5230 {len(data)} \u6761\u6570\u636e\")\r\n```\r\n\r\n### Q: \u5982\u4f55\u7981\u7528\u81ea\u52a8\u670d\u52a1\u7ba1\u7406\uff1f\r\nA: \u5728\u521b\u5efaAPI\u5ba2\u6237\u7aef\u65f6\u8bbe\u7f6e\u53c2\u6570\uff1a\r\n\r\n```python\r\nfrom akshare_api import AKShareAPI\r\n\r\n# \u7981\u7528\u81ea\u52a8\u670d\u52a1\u7ba1\u7406\r\napi = AKShareAPI(auto_start_service=False)\r\n```\r\n\r\n### Q: \u5982\u4f55\u67e5\u770b\u670d\u52a1\u72b6\u6001\uff1f\r\nA: \u4f7f\u7528\u670d\u52a1\u72b6\u6001API\uff1a\r\n\r\n```python\r\nfrom akshare_api import AKShareAPI\r\n\r\napi = AKShareAPI()\r\nstatus = api.get_service_status()\r\nprint(f\"\u670d\u52a1\u72b6\u6001: {status}\")\r\n```\r\n\r\n### Q: \u5982\u4f55\u624b\u52a8\u7ba1\u7406\u670d\u52a1\uff1f\r\nA: \u4f7f\u7528\u670d\u52a1\u7ba1\u7406\u65b9\u6cd5\uff1a\r\n\r\n```python\r\nfrom akshare_api import AKShareAPI\r\n\r\napi = AKShareAPI(auto_start_service=False)\r\n\r\n# \u542f\u52a8\u670d\u52a1\r\napi.start_service()\r\n\r\n# \u91cd\u542f\u670d\u52a1\r\napi.restart_service()\r\n\r\n# \u505c\u6b62\u670d\u52a1\r\napi.stop_service()\r\n```\r\n\r\n## \ud83e\udd1d \u8d21\u732e\r\n\r\n\u6b22\u8fce\u5bf9\u672c\u9879\u76ee\u63d0\u51fa\u5efa\u8bae\u6216\u8d21\u732e\u4ee3\u7801\uff1a\r\n\r\n1. Fork \u672c\u4ed3\u5e93\r\n2. \u521b\u5efa\u60a8\u7684\u7279\u6027\u5206\u652f (`git checkout -b feature/AmazingFeature`)\r\n3. \u63d0\u4ea4\u60a8\u7684\u66f4\u6539 (`git commit -m 'Add some AmazingFeature'`)\r\n4. \u63a8\u9001\u5230\u5206\u652f (`git push origin feature/AmazingFeature`)\r\n5. \u6253\u5f00\u4e00\u4e2a Pull Request\r\n\r\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\r\n\r\n\u672c\u9879\u76ee\u91c7\u7528 MIT \u8bb8\u53ef\u8bc1\u8fdb\u884c\u6388\u6743\uff0c\u8be6\u60c5\u8bf7\u53c2\u9605 [LICENSE](LICENSE) \u6587\u4ef6\u3002\r\n\r\n## \ud83d\ude4f \u81f4\u8c22\r\n\r\n- \u611f\u8c22 [AKShare](https://github.com/akfamily/akshare) \u9879\u76ee\u63d0\u4f9b\u7684\u6570\u636e\u63a5\u53e3\r\n- \u611f\u8c22 [AKTools](https://github.com/akfamily/aktools) \u9879\u76ee\u63d0\u4f9b\u7684API\u670d\u52a1\r\n\r\n## \ud83d\udcde \u8054\u7cfb\u65b9\u5f0f\r\n\r\n- \u9879\u76ee\u5730\u5740\uff1ahttps://github.com/JoshuaMaoJH/akshare-api\r\n- \u95ee\u9898\u53cd\u9988\uff1ahttps://github.com/JoshuaMaoJH/akshare-api/issues\r\n- \u6587\u6863\u5730\u5740\uff1ahttps://github.com/JoshuaMaoJH/akshare-api#readme\r\n\r\n\u5982\u6709\u4efb\u4f55\u95ee\u9898\u6216\u5efa\u8bae\uff0c\u6b22\u8fce\u901a\u8fc7Issue\u4e0e\u6211\u4eec\u8054\u7cfb\u3002\r\n\r\n## \ud83d\udcc8 \u66f4\u65b0\u65e5\u5fd7\r\n\r\n### v1.1.0 (2024-01-15)\r\n\r\n**\u91cd\u5927\u66f4\u65b0\uff1a\u81ea\u52a8\u670d\u52a1\u7ba1\u7406\u529f\u80fd**\r\n\r\n#### \u2728 \u65b0\u589e\u529f\u80fd\r\n- \ud83d\udd27 **\u81ea\u52a8\u670d\u52a1\u7ba1\u7406**: \u81ea\u52a8\u5b89\u88c5\u548c\u542f\u52a8AKTools\u670d\u52a1\uff0c\u65e0\u9700\u624b\u52a8\u914d\u7f6e\r\n- \ud83d\udd04 **\u667a\u80fd\u91cd\u8fde**: \u8fde\u63a5\u5931\u8d25\u65f6\u81ea\u52a8\u91cd\u542f\u670d\u52a1\u5e76\u91cd\u8bd5\u8bf7\u6c42\r\n- \ud83d\udee0\ufe0f **\u670d\u52a1\u7ba1\u7406API**: \u63d0\u4f9b\u5b8c\u6574\u7684\u670d\u52a1\u72b6\u6001\u76d1\u63a7\u548c\u7ba1\u7406\u529f\u80fd\r\n- \ud83d\udda5\ufe0f **\u589e\u5f3a\u547d\u4ee4\u884c\u5de5\u5177**: \u65b0\u589e\u670d\u52a1\u7ba1\u7406\u547d\u4ee4\r\n- \ud83d\udcca **\u670d\u52a1\u72b6\u6001\u76d1\u63a7**: \u5b9e\u65f6\u76d1\u63a7\u670d\u52a1\u8fd0\u884c\u72b6\u6001\u548c\u54cd\u5e94\u65f6\u95f4\r\n\r\n#### \ud83d\udd27 \u6280\u672f\u6539\u8fdb\r\n- \u65b0\u589e `AKToolsServiceManager` \u670d\u52a1\u7ba1\u7406\u5668\u7c7b\r\n- \u96c6\u6210\u81ea\u52a8\u670d\u52a1\u7ba1\u7406\u5230\u4e3bAPI\u7c7b\r\n- \u6dfb\u52a0 `auto_start_service` \u53c2\u6570\u63a7\u5236\u81ea\u52a8\u670d\u52a1\u7ba1\u7406\r\n- \u5b8c\u5584\u9519\u8bef\u5904\u7406\u548c\u91cd\u8bd5\u673a\u5236\r\n- \u652f\u6301\u8de8\u5e73\u53f0\u670d\u52a1\u7ba1\u7406\r\n\r\n#### \ud83d\udcda \u6587\u6863\u66f4\u65b0\r\n- \u66f4\u65b0README.md\uff0c\u6dfb\u52a0\u81ea\u52a8\u670d\u52a1\u7ba1\u7406\u8bf4\u660e\r\n- \u65b0\u589e\u8be6\u7ec6\u4f7f\u7528\u793a\u4f8b\u548c\u5e38\u89c1\u95ee\u9898\u89e3\u7b54\r\n- \u66f4\u65b0\u5b89\u88c5\u548c\u4f7f\u7528\u6307\u5357\r\n\r\n#### \ud83d\udd04 \u5411\u540e\u517c\u5bb9\r\n- \u6240\u6709\u539f\u6709API\u63a5\u53e3\u4fdd\u6301\u4e0d\u53d8\r\n- \u51fd\u6570\u5f0f\u8c03\u7528\u65b9\u5f0f\u5b8c\u5168\u517c\u5bb9\r\n- \u9ed8\u8ba4\u542f\u7528\u81ea\u52a8\u670d\u52a1\u7ba1\u7406\uff0c\u53ef\u901a\u8fc7\u53c2\u6570\u7981\u7528\r\n\r\n### v1.0.0 (2024-01-01)\r\n\r\n**\u521d\u59cb\u7248\u672c\u53d1\u5e03**\r\n\r\n#### \u2728 \u65b0\u589e\u529f\u80fd\r\n- \ud83c\udf89 **\u5b8c\u6574\u63a5\u53e3\u5e93**: \u5305\u542b\u6240\u670998\u4e2aAKShare\u63a5\u53e3\r\n- \ud83c\udf0d **\u591a\u5e02\u573a\u652f\u6301**: \u652f\u6301A\u80a1\u3001B\u80a1\u3001\u6e2f\u80a1\u3001\u7f8e\u80a1\u6570\u636e\u63a5\u53e3\r\n- \ud83d\udd25 **\u9ad8\u7ea7\u529f\u80fd**: \u6da8\u505c\u677f\u3001\u9f99\u864e\u699c\u3001\u673a\u6784\u8c03\u7814\u3001\u7814\u62a5\u8d44\u8baf\u7b49\u9ad8\u7ea7\u529f\u80fd\u63a5\u53e3\r\n- \ud83d\udcca **\u63a5\u53e3\u7edf\u8ba1**: \u5b8c\u6574\u7684\u63a5\u53e3\u5206\u7c7b\u7edf\u8ba1\u548c\u4f7f\u7528\u8bf4\u660e\r\n- \ud83d\udc0d **Python\u5c01\u88c5**: \u9762\u5411\u5bf9\u8c61\u548c\u51fd\u6570\u5f0f\u4e24\u79cd\u8c03\u7528\u65b9\u5f0f\r\n- \ud83d\udee0\ufe0f **CLI\u5de5\u5177**: \u547d\u4ee4\u884c\u5de5\u5177\u652f\u6301\u63a5\u53e3\u5217\u8868\u548c\u8fde\u63a5\u6d4b\u8bd5\r\n- \ud83d\udcda **\u5b8c\u6574\u6587\u6863**: \u8be6\u7ec6\u7684API\u6587\u6863\u548c\u4f7f\u7528\u793a\u4f8b\r\n\r\n#### \ud83d\udcc8 \u63a5\u53e3\u6570\u91cf\r\n- **A\u80a1\u6570\u636e\u63a5\u53e3**: 47\u4e2a\uff08\u5e02\u573a\u603b\u8c8c\u3001\u5b9e\u65f6\u884c\u60c5\u3001\u5386\u53f2\u6570\u636e\u3001\u5206\u65f6\u6570\u636e\u7b49\uff09\r\n- **B\u80a1\u6570\u636e\u63a5\u53e3**: 4\u4e2a\uff08\u5b9e\u65f6\u884c\u60c5\u3001\u5386\u53f2\u6570\u636e\u3001\u5206\u65f6\u6570\u636e\uff09\r\n- **\u6e2f\u80a1\u6570\u636e\u63a5\u53e3**: 3\u4e2a\uff08\u5b9e\u65f6\u884c\u60c5\u3001\u5386\u53f2\u6570\u636e\uff09\r\n- **\u7f8e\u80a1\u6570\u636e\u63a5\u53e3**: 3\u4e2a\uff08\u5b9e\u65f6\u884c\u60c5\u3001\u5386\u53f2\u6570\u636e\uff09\r\n- **\u9ad8\u7ea7\u529f\u80fd\u63a5\u53e3**: 36\u4e2a\uff08\u57fa\u672c\u9762\u3001\u8d44\u91d1\u6d41\u5411\u3001\u6982\u5ff5\u677f\u5757\u7b49\uff09\r\n- **\u5176\u4ed6\u529f\u80fd\u63a5\u53e3**: 5\u4e2a\uff08\u6bd4\u8f83\u5206\u6790\u3001\u7279\u6b8a\u529f\u80fd\u7b49\uff09\r\n\r\n---\r\n\r\n**\ud83c\udf89 \u73b0\u5728\u60a8\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528AKShare API\uff0c\u65e0\u9700\u4efb\u4f55\u624b\u52a8\u914d\u7f6e\uff01**\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "\u57fa\u4e8eAKTools\u516c\u5f00API\u7684AKShare\u80a1\u7968\u6570\u636e\u63a5\u53e3Python\u8c03\u7528\u5e93",
    "version": "1.1.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/JoshuaMaoJH/akshare-api/issues",
        "Changelog": "https://github.com/JoshuaMaoJH/akshare-api/blob/main/CHANGELOG.md",
        "Documentation": "https://github.com/JoshuaMaoJH/akshare-api#readme",
        "Homepage": "https://github.com/JoshuaMaoJH/akshare-api",
        "Repository": "https://github.com/JoshuaMaoJH/akshare-api.git"
    },
    "split_keywords": [
        "akshare",
        " stock",
        " finance",
        " api",
        " data",
        " trading",
        " china",
        " market"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6e04d6f809d5fbe154291193a179814654ae0c727b9601c0f3f3d36188ddb89b",
                "md5": "32d25861a60d8bbf3906eb775a4c04d0",
                "sha256": "8e29d1e00eca2aedaacceaff47eb90d735083a8a625bdd738cd711904dbd6e4e"
            },
            "downloads": -1,
            "filename": "akshare_api-1.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "32d25861a60d8bbf3906eb775a4c04d0",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 19729,
            "upload_time": "2025-10-23T07:17:19",
            "upload_time_iso_8601": "2025-10-23T07:17:19.701226Z",
            "url": "https://files.pythonhosted.org/packages/6e/04/d6f809d5fbe154291193a179814654ae0c727b9601c0f3f3d36188ddb89b/akshare_api-1.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b3b8030dcda24dd1cfc80a0e4b8a0ad70ef118119d7dbbcc171cea06d52cf3fd",
                "md5": "a2de7c3aa043732539e5336accec7fb7",
                "sha256": "e738d9fb9f9ddc81ff19ce1233c6f1ff076e69799de4ca4c590fead21b47f580"
            },
            "downloads": -1,
            "filename": "akshare_api-1.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "a2de7c3aa043732539e5336accec7fb7",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 34746,
            "upload_time": "2025-10-23T07:17:20",
            "upload_time_iso_8601": "2025-10-23T07:17:20.775335Z",
            "url": "https://files.pythonhosted.org/packages/b3/b8/030dcda24dd1cfc80a0e4b8a0ad70ef118119d7dbbcc171cea06d52cf3fd/akshare_api-1.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-23 07:17:20",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "JoshuaMaoJH",
    "github_project": "akshare-api",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "requests",
            "specs": [
                [
                    ">=",
                    "2.25.0"
                ]
            ]
        },
        {
            "name": "pandas",
            "specs": [
                [
                    ">=",
                    "1.3.0"
                ]
            ]
        },
        {
            "name": "numpy",
            "specs": [
                [
                    ">=",
                    "1.20.0"
                ]
            ]
        },
        {
            "name": "openpyxl",
            "specs": [
                [
                    ">=",
                    "3.0.0"
                ]
            ]
        }
    ],
    "lcname": "akshare-api"
}
        
Elapsed time: 1.47345s