优化akshare 调用,同时支持多个股票代码的查询,将symbol 支持[“002195“,“300124“...]数组

博客介绍了如何优化akshare调用,支持同时查询多个股票代码。通过修改输入参数、更新函数以及处理命令行参数,实现了批量查询的功能。当未提供股票代码时,程序会使用默认的股票代码列表。
摘要由CSDN通过智能技术生成

原有逻辑实现

原有代码:import akshare as ak
import pandas as pd
import time
import sys
from datetime import datetime
import os

def update_stock_details(output_folder, symbol):
    output_file = os.path.join(output_folder, f'stock_details_{
     symbol}.csv')
    # 尝试读取现有文件内容
    try:
        existing_data = pd.read_csv(output_file)
    except FileNotFoundError:
        existing_data = pd.DataFrame()
    
    while True:
        try :
            # 获取实时数据
            stock_intraday_em_df = ak.stock_intraday_em(symbol=symbol)
            
            # 替换‘买盘’和‘卖盘’为对应的数值
            stock_intraday_em_df.replace({
   '买盘': 1,'中性盘': 0, '卖盘': -1}, inplace=True)

            # 检查新数据是否与旧数据相同
            if not stock_intraday_em_df.equals(existing_data):
                # 检查新数据中超出1000手的行
                new_big_count_data = stock_intraday_em_df[stock_intraday_em_df['手数'] > 1000]

                # 过滤掉已经显示过的数据
                new_big_count_data = new_big_count_data[~new_big_count_data.index.isin(existing_data.index)]

                # 如果有超出1000手的行,输出到屏幕并记录到已有数据中
                if not new_big_count_data.empty:
                    print(new_big_count_data)
                    existing_data = pd.concat([existing_data, new_big_count_data])

                # 更新文件数据
                stock_intraday_em_df.to_csv(output_file, index=False, encoding="utf-8")
            else:
                print("数据未变化,不更新文件。")
            
            time.sleep(6)
        except:
            print(f"Failed to fetch data for {
     symbol}. Retrying in 5 seconds...")
            time.sleep(10)

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值