最近在学习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)
获取的数据:

鉴于篇幅有限,此处只显示部分数据
存储到excel中为:list_stock.csv

保存获取到的数据到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}]

获取到的万科A近期30条股票数据
将获取到的股票数据保存到excel中:000002_stock.csv
