孟木 2025-09-23 09:28 采纳率: 0%
浏览 65

关于akshare的2个问题

有一个很普遍使用的包 akshare
我想请教2个问题
问题1:因为一些特定的原因,我公司的Python、Spyder、pandas被分别固定在3.8.10、5.5.4和2.0.3,且版本号不得随意更改。
在此之前,我能够使用akshare,现在却报错(详见附图)。具体来说就是使用akshare版本(1.16.72、1.17.49、1.17.9等数十个版本均不能使用)

img

img

img

问题2:akshare有不少数据都是从东方财富网爬虫得来。现在东方财富网有了反爬虫机制,请问还有什么替代的数据来源吗?

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2025-09-23 09:29
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    针对您提出的两个问题,以下是详细的解答和解决方案:


    问题1:akshare在Python 3.8.10、Spyder 5.5.4、pandas 2.0.3环境下无法使用

    原因分析

    您提到的环境(Python 3.8.10、Spyder 5.5.4、pandas 2.0.3)是较为老旧的版本。akshare 的某些版本可能不兼容这些旧版库,尤其是 pandas 2.0.3 和 Python 3.8.10。

    关键点:

    • akshare 1.16.72 及以上版本通常要求 Python 3.9+pandas 2.0.0+
    • pandas 2.0.3 是较新版本,而 akshare 的部分功能可能依赖于 pandas 的更新特性,例如 DataFrame 的新 API 或性能优化。
    • Spyder 5.5.4 本身是较新的版本,但其对某些包的支持可能与 akshare 存在冲突。

    解决方案

    1. 升级 Python 环境(推荐)

    如果条件允许,建议将 Python 升级到 3.9 或更高版本,因为这是 akshare 推荐的运行环境。

    注意: 如果您的公司环境限制严格,无法升级 Python,可以尝试以下替代方案。

    2. 使用兼容的 akshare 版本

    尝试安装 akshare 1.16.72 之前的版本,例如:

    pip install akshare==1.16.6
    

    或:

    pip install akshare==1.16.5
    

    说明: 这些旧版本可能对 pandas 的依赖较低,更适配您的环境。

    3. 回退 pandas 到较低版本

    如果您无法升级 Python,可以尝试将 pandas 回退到 1.5.x 或更低版本,以兼容 akshare。

    pip uninstall pandas
    pip install pandas==1.5.3
    

    注意: 某些 akshare 功能可能在低版本 pandas 上无法正常工作,需测试确认。

    4. 安装 akshare 时添加 --no-cache-dir 参数

    有时 pip 缓存可能导致版本冲突,可以尝试清除缓存后重新安装:

    pip cache purge
    pip install akshare==1.16.6
    

    5. 使用虚拟环境隔离依赖

    创建一个独立的虚拟环境,避免全局环境冲突:

    python -m venv myenv
    source myenv/bin/activate  # Linux/Mac
    myenv\Scripts\activate     # Windows
    pip install akshare==1.16.6
    

    问题2:akshare 数据来源为东方财富网,现在有反爬虫机制,如何替代?

    原因分析

    akshare 使用了 东方财富网(Eastmoney) 作为数据源之一,但该网站已启用反爬虫机制,导致 akshare 部分接口失效。


    替代数据来源及解决方案

    1. 使用其他开源金融数据源

    以下是一些常用的开源金融数据源,可替代东方财富网的部分功能:

    | 数据源 | 说明 | 是否免费 | 备注 | |--------|------|----------|------| | Tushare | 中国 A 股市场数据,提供股票、基金、行业等数据 | ✅ 免费(部分功能需付费) | 推荐使用,功能全面 | | Sina Finance | 提供股票实时行情 | ✅ 免费 | 但部分数据可能不稳定 | | Yahoo Finance | 国际金融市场数据 | ✅ 免费 | 不支持 A 股市场 | | Wind | 专业金融终端,数据丰富 | ❌ 付费 | 适合企业用户 | | Alpha Vantage | 国际股票数据 | ✅ 免费(有限制) | 支持美股、ETF 等 |

    2. 使用 Tushare 替代 akshare 的部分功能

    安装 Tushare
    pip install tushare
    
    示例代码:获取股票历史数据
    import tushare as ts
    
    # 设置 token(需要注册获取)
    ts.set_token('your_token')
    
    # 获取股票信息
    df = ts.get_hist_data('000001')  # '000001' 是平安银行的代码
    print(df)
    

    注意: 需要注册 Tushare 并获取 API Token。

    3. 使用 Wind 数据(企业级)

    如果您的公司有购买 Wind 数据服务,可以通过 Wind 的 Python 接口进行调用:

    import windpyapi as w
    
    w.start()
    data = w.wsd("000001.SZ", "open,high,low,close", "2023-01-01", "2023-12-31")
    print(data.Data)
    

    注意: 需要安装 Wind 的 Python SDK,并配置好环境。

    4. 自建数据源(高级)

    如果您的公司有较强的技术能力,可以考虑搭建自己的数据采集系统,使用如下工具:

    • Scrapy / BeautifulSoup:用于网页爬虫
    • Requests / Selenium:用于动态页面抓取
    • MySQL / PostgreSQL:用于存储数据
    • 定时任务调度器(如 Celery / Airflow):用于定期更新数据

    总结

    | 问题 | 解决方案 | |------|----------| | akshare 在旧环境中报错 | - 升级 Python 或回退 pandas
    - 安装兼容版本的 akshare
    - 使用虚拟环境隔离依赖 | | 东方财富网反爬虫导致数据不可用 | - 使用 Tushare 作为替代数据源
    - 注册 Wind 数据服务
    - 自建数据采集系统 |


    如果您需要我为您生成一个基于 Tushare 的完整代码示例,请告诉我具体的数据需求(如股票代码、时间范围等),我可以为您定制化编写代码。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月23日