excel表格中如何引入股票实时数据 (如何用python获取实时的股票数据)

最近在学习Python,在经历了一番学习之后,觉得是时候做一个简单的项目给Python的学习之旅增添一些乐趣了呀。

嘿嘿~

今天就找了一个小的项目进行练手,使用Python实时获取一下股票数据并存储到excel。

第一步:我们先来获取一些上市公司相关数据

代码如下:

import pandas as pd
# 参考链接:https://tushare.pro/document/2?doc_id=252
import tushare as ts

pd.set_option('display.max_columns',None)
pd.set_option('display.max_rows',None)
pro = ts.pro_api('1dd91c69f010bd1900c6424396a6831d6b38d2077e16e960d82c313f')
df = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,industry,name,area,list_date')
df.to_csv("~/Downloads/list_stock.csv",encoding="gbk",index=False)
print(df)

获取的数据:

python获取股票数据并存入数据库,python实时获取股票数据可视化

鉴于篇幅有限,此处只显示部分数据

存储到excel中为:list_stock.csv

python获取股票数据并存入数据库,python实时获取股票数据可视化

保存获取到的数据到excel中

在获得了上市公司数据之后,我们选择万科A作为我们下面的数据获取对象。

第二:获取万科A的相关股票数据

代码如下:

from matplotlib import font_manager
my_font = font_manager.FontProperties(fname="/Library/Fonts/Arial Unicode.ttf")
from urllib import request
import json
import pandas as pd
from datetime import datetime
from threading import Timer

def Time_threading(inc):
    print(datetime.now())
    t = Timer(inc,Time_threading,(inc,))
    t.start()
    df = get_stock_data('SZ000002',30,30)
    #导入到excel
    df.to_csv("~/Downloads/000002_stock.csv", encoding="gbk", index=False)
    print(df)
    df.head()

def get_stock_data(id,scale,data_len):
    symsol = '股票代码'
    scale = scale
    data_len = data_len
    url = 'http://quotes.sina.cn/cn/api/json_v2.php/CN_MarketDataService.getKLineData?symbol={0}&scale={1}&datalen={2}'.format(id, scale, data_len)
    req = request.Request(url)
    rsp = request.urlopen(req)
    res = rsp.read()
    res_json = json.loads(res)
    bar_list = []
    res_json.reverse()
    print(res_json)
    for dict in res_json:
        bar = {}
        bar['date'] = dict['day']
        bar['open'] = float(dict['open'])
        bar['high'] = float(dict['high'])
        bar['low'] = float(dict['low'])
        bar['close'] = float(dict['close'])
        bar['volume'] = int(dict['volume'])
        bar_list.append(bar)
    df = pd.DataFrame(data=bar_list)
    # show_k_line(bar_list,bar_list2,high_list,high_list2)
    return df

#函数调用
Time_threading(60)

获取的数据展示:

[{'day': '2026-03-18T14:26:35+00:00', 'open': '31.570', 'high': '31.900', 'low': '31.500', 'close': '31.500', 'volume': '18242717', 'ma_price5': 32.268, 'ma_volume5': 21434335, 'ma_price10': 32.779, 'ma_volume10': 18481504, 'ma_price30': 33.19, 'ma_volume30': 15283957}, {'day': '2026-03-18T14:26:35+00:00', 'open': '32.200', 'high': '32.690', 'low': '31.520', 'close': '31.570', 'volume': '37403939', 'ma_price5': 32.574, 'ma_volume5': 20502090, 'ma_price10': 32.979, 'ma_volume10': 18097020, 'ma_price30': 33.24, 'ma_volume30': 15048211}, {'day': '2026-03-18T14:26:35+00:00', 'open': '32.670', 'high': '32.740', 'low': '32.470', 'close': '32.690', 'volume': '23950425', 'ma_price5': 32.894, 'ma_volume5': 15884232, 'ma_price10': 33.162, 'ma_volume10': 15195092, 'ma_price30': 33.298, 'ma_volume30': 14583988}, {'day': '2026-03-18T14:26:35+00:00', 'open': '32.920', 'high': '33.080', 'low': '32.640', 'close': '32.670', 'volume': '17370817', 'ma_price5': 32.992, 'ma_volume5': 13131369, 'ma_price10': 33.222, 'ma_volume10': 13541350, 'ma_price30': 33.308, 'ma_volume30': 14265275}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.040', 'high': '33.200', 'low': '32.910', 'close': '32.910', 'volume': '10203779', 'ma_price5': 33.146, 'ma_volume5': 12354510, 'ma_price10': 33.285, 'ma_volume10': 13281701, 'ma_price30': 33.319, 'ma_volume30': 15087698}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.170', 'high': '33.500', 'low': '32.950', 'close': '33.030', 'volume': '13581491', 'ma_price5': 33.29, 'ma_volume5': 15528673, 'ma_price10': 33.302, 'ma_volume10': 13182534, 'ma_price30': 33.325, 'ma_volume30': 15416044}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.170', 'high': '33.190', 'low': '32.810', 'close': '33.170', 'volume': '14314649', 'ma_price5': 33.384, 'ma_volume5': 15691951, 'ma_price10': 33.326, 'ma_volume10': 12900653, 'ma_price30': 33.338, 'ma_volume30': 15456640}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.430', 'high': '33.440', 'low': '33.150', 'close': '33.180', 'volume': '10186111', 'ma_price5': 33.43, 'ma_volume5': 14505951, 'ma_price10': 33.378, 'ma_volume10': 13532334, 'ma_price30': 33.34, 'ma_volume30': 15438870}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.640', 'high': '33.810', 'low': '33.270', 'close': '33.440', 'volume': '13486520', 'ma_price5': 33.452, 'ma_volume5': 13951330, 'ma_price10': 33.375, 'ma_volume10': 15583520, 'ma_price30': 33.347, 'ma_volume30': 15715164}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.300', 'high': '34.100', 'low': '33.160', 'close': '33.630', 'volume': '26074592', 'ma_price5': 33.424, 'ma_volume5': 14208892, 'ma_price10': 33.36, 'ma_volume10': 15299375, 'ma_price30': 33.364, 'ma_volume30': 16314519}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.390', 'high': '33.600', 'low': '33.330', 'close': '33.500', 'volume': '14397881', 'ma_price5': 33.314, 'ma_volume5': 10836396, 'ma_price10': 33.361, 'ma_volume10': 13730488, 'ma_price30': 33.345, 'ma_volume30': 16266991}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.290', 'high': '33.450', 'low': '33.280', 'close': '33.400', 'volume': '8384652', 'ma_price5': 33.268, 'ma_volume5': 10109355, 'ma_price10': 33.342, 'ma_volume10': 13042197, 'ma_price30': 33.35, 'ma_volume30': 17521900}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.310', 'high': '33.450', 'low': '33.200', 'close': '33.290', 'volume': '7413006', 'ma_price5': 33.326, 'ma_volume5': 12558717, 'ma_price10': 33.337, 'ma_volume10': 13641334, 'ma_price30': 33.311, 'ma_volume30': 19799854}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.080', 'high': '33.710', 'low': '33.040', 'close': '33.300', 'volume': '14774328', 'ma_price5': 33.298, 'ma_volume5': 17215709, 'ma_price10': 33.351, 'ma_volume10': 13794659, 'ma_price30': 33.301, 'ma_volume30': 20553211}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.270', 'high': '33.270', 'low': '32.950', 'close': '33.080', 'volume': '9212111', 'ma_price5': 33.296, 'ma_volume5': 16389858, 'ma_price10': 33.383, 'ma_volume10': 13271417, 'ma_price30': 33.29, 'ma_volume30': 22140957}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.690', 'high': '33.750', 'low': '33.260', 'close': '33.270', 'volume': '10762680', 'ma_price5': 33.408, 'ma_volume5': 16624581, 'ma_price10': 33.432, 'ma_volume10': 14550873, 'ma_price30': 33.287, 'ma_volume30': 21878865}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.150', 'high': '33.990', 'low': '33.040', 'close': '33.690', 'volume': '20631460', 'ma_price5': 33.416, 'ma_volume5': 15975039, 'ma_price10': 33.552, 'ma_volume10': 17206242, 'ma_price30': 33.278, 'ma_volume30': 21633161}, {'day': '2026-03-18T14:26:35+00:00', 'open': '32.950', 'high': '33.480', 'low': '32.590', 'close': '33.150', 'volume': '30697968', 'ma_price5': 33.348, 'ma_volume5': 14723951, 'ma_price10': 33.518, 'ma_volume10': 16617702, 'ma_price30': 33.255, 'ma_volume30': 21042519}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.630', 'high': '33.650', 'low': '33.260', 'close': '33.290', 'volume': '10645072', 'ma_price5': 33.404, 'ma_volume5': 10373608, 'ma_price10': 33.505, 'ma_volume10': 14384055, 'ma_price30': 33.249, 'ma_volume30': 20366212}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.320', 'high': '33.670', 'low': '33.280', 'close': '33.640', 'volume': '10385725', 'ma_price5': 33.47, 'ma_volume5': 10152975, 'ma_price10': 33.484, 'ma_volume10': 13953002, 'ma_price30': 33.239, 'ma_volume30': 22802548}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.350', 'high': '33.680', 'low': '33.310', 'close': '33.310', 'volume': '7514970', 'ma_price5': 33.456, 'ma_volume5': 12477165, 'ma_price10': 33.431, 'ma_volume10': 13639878, 'ma_price30': 33.17, 'ma_volume30': 24620059}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.400', 'high': '33.510', 'low': '33.160', 'close': '33.350', 'volume': '14376018', 'ma_price5': 33.688, 'ma_volume5': 18437444, 'ma_price10': 33.398, 'ma_volume10': 14005416, 'ma_price30': 33.059, 'ma_volume30': 24812806}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.620', 'high': '33.900', 'low': '33.350', 'close': '33.430', 'volume': '8946255', 'ma_price5': 33.688, 'ma_volume5': 18511452, 'ma_price10': 33.395, 'ma_volume10': 14915540, 'ma_price30': 32.939, 'ma_volume30': 24647416}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.570', 'high': '33.850', 'low': '33.400', 'close': '33.620', 'volume': '9541906', 'ma_price5': 33.606, 'ma_volume5': 18394501, 'ma_price10': 33.35, 'ma_volume10': 15459816, 'ma_price30': 32.817, 'ma_volume30': 24582130}, {'day': '2026-03-18T14:26:35+00:00', 'open': '34.470', 'high': '34.600', 'low': '33.480', 'close': '33.570', 'volume': '22006675', 'ma_price5': 33.498, 'ma_volume5': 17753030, 'ma_price10': 33.289, 'ma_volume10': 18709976, 'ma_price30': 32.696, 'ma_volume30': 24507851}, {'day': '2026-03-18T14:26:35+00:00', 'open': '32.990', 'high': '34.590', 'low': '32.900', 'close': '34.470', 'volume': '37316368', 'ma_price5': 33.406, 'ma_volume5': 14802591, 'ma_price10': 33.242, 'ma_volume10': 18514725, 'ma_price30': 32.572, 'ma_volume30': 24180469}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.010', 'high': '33.350', 'low': '33.000', 'close': '33.350', 'volume': '14746058', 'ma_price5': 33.108, 'ma_volume5': 9573387, 'ma_price10': 33.135, 'ma_volume10': 16263024, 'ma_price30': 32.433, 'ma_volume30': 23580450}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.060', 'high': '33.110', 'low': '32.990', 'close': '33.020', 'volume': '8361499', 'ma_price5': 33.102, 'ma_volume5': 11319627, 'ma_price10': 33.124, 'ma_volume10': 16166573, 'ma_price30': 32.327, 'ma_volume30': 23391358}, {'day': '2026-03-18T14:26:35+00:00', 'open': '33.120', 'high': '33.150', 'low': '32.970', 'close': '33.080', 'volume': '6334549', 'ma_price5': 33.094, 'ma_volume5': 12525131, 'ma_price10': 33.162, 'ma_volume10': 17177918, 'ma_price30': 32.225, 'ma_volume30': 23742677}, {'day': '2026-03-18T14:26:35+00:00', 'open': '32.980', 'high': '33.200', 'low': '32.880', 'close': '33.110', 'volume': '7254480', 'ma_price5': 33.08, 'ma_volume5': 19666922, 'ma_price10': 33.248, 'ma_volume10': 19691180, 'ma_price30': 32.122, 'ma_volume30': 24054097}]

python获取股票数据并存入数据库,python实时获取股票数据可视化

获取到的万科A近期30条股票数据

将获取到的股票数据保存到excel中:000002_stock.csv

python获取股票数据并存入数据库,python实时获取股票数据可视化