VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > python数据分析 >
  • 第一个股票工具:爬取实时股价并打印

第1章 为什么用Python开发股票工具?
1.5 第一个股票工具:爬取实时股价并打印
1.5.1 从“0”到“1”:写出你的第一行股票工具代码
咱们不搞虚的,直接上手写代码。这一节的目标很简单:用Python爬取某只股票的实时股价,然后打印出来。虽然功能简单,但它包含了股票工具开发的核心流程:数据获取→数据处理→结果输出。学会这个,你就掌握了Python股票工具开发的基vb.net教程C#教程python教程SQL教程access 2010教程本逻辑。
1.5.2 准备工作:安装Python和必要的库
在写代码之前,你需要先做好准备工作:
1.安装Python:从Python官网( https://www.python.org/downloads/ )下载Python 3.10或更高版本,安装时勾选“Add Python to PATH”
2.安装Tushare库:打开命令提示符(Windows)或终端(Mac/Linux),输入pip install tushare,按回车安装
3.注册Tushare账号:访问Tushare官网( https://tushare.pro/register?reg=785040 )注册账号,获取你的Token(个人中心→接口Token)
1.5.3 实战:爬取贵州茅台的实时股价并打印
python

	# 1. 导入Tushare库
	import tushare as ts
	
	# 2. 设置Tushare的Token(替换成你自己的Token)
	ts.set_token('你的Tushare Token')
	
	# 3. 初始化Tushare接口
	pro = ts.pro_api()
	
	# 4. 爬取实时股价数据
	# 获取贵州茅台(600519.SH)的最新1分钟K线数据(包含实时股价)
	min_data = pro.bar(ts_code='600519.SH', freq='1min', count=1)
	
	# 5. 提取实时股价
	# 实时收盘价就是最新1分钟K线的close字段
	current_price = min_data['close'].iloc[0]
	
	# 6. 打印结果
	print(f'贵州茅台(600519.SH)的实时股价:{current_price:.2f}元')

逐行讲解:
1.import tushare as ts:导入Tushare库,as ts是给库起个简称,方便后面调用
2.ts.set_token('你的Tushare Token'):设置Tushare的Token,这是调用接口的凭证,必须替换成你自己的Token
3.pro = ts.pro_api():初始化Tushare的接口对象,后面所有的数据获取都要通过这个对象
4.pro.bar(ts_code='600519.SH', freq='1min', count=1):
1.ts_code='600519.SH':股票代码,贵州茅台的代码是600519.SH(SH表示上海证券交易所)
2.freq='1min':K线周期,1min表示1分钟K线,包含实时股价数据
3.count=1:获取最新的1条数据
5.current_price = min_data['close'].iloc[0]:
1.min_data['close']:提取DataFrame中的close列,也就是收盘价
2..iloc[0]:取第1行数据,因为我们只获取了1条数据,所以这就是最新的实时股价
6.print(f'贵州茅台(600519.SH)的实时股价:{current_price:.2f}元'):
1.f'...':Python的f-string格式化字符串,把变量插入到字符串中
2.{current_price:.2f}:把股价格式化为保留2位小数的浮点数,符合人民币的显示习惯
运行结果:
贵州茅台(600519.SH)的实时股价:1850.50元
1.5.4 常见问题与解决方法
问题1:运行代码时提示“Token错误”
原因:你输入的Token不正确,或者没有替换成你自己的Token
解决方法:登录Tushare官网,进入个人中心→接口Token,复制正确的Token替换代码中的你的Tushare Token
问题2:运行代码时提示“接口调用次数超过限制”
原因:Tushare的免费接口每天有调用次数限制(1000次/天),你今天的调用次数已经用完了
解决方法:
1.等待第二天0点重置调用次数
2.升级到Tushare的付费版(99元/年),无调用次数限制
3.改用其他免费数据接口,比如Baostock(完全免费,无调用限制)
问题3:爬取的股价不是实时的
原因:Tushare的免费接口提供的1分钟K线数据有15分钟延迟(这是交易所的规定,免费数据不能实时)
解决方法:
1.如果只是学习用,15分钟延迟完全足够
2.如果需要真正的实时数据,需要升级到Tushare的付费版,或者对接券商的Level2数据接口
1.5.5 基础知识拓展:股票代码的规则
你可能会好奇,为什么贵州茅台的代码是600519.SH,而平安银行的代码是000001.SZ?这是因为国内的股票代码有统一的规则:
上海证券交易所(SH):股票代码以600、601、603、605开头,比如贵州茅台(600519.SH)、中国平安(601318.SH)
深圳证券交易所(SZ):
主板:以000开头,比如平安银行(000001.SZ)
中小板:以002开头,比如苏宁易购(002024.SZ)
创业板:以300开头,比如宁德时代(300750.SZ)
科创板:以688开头(属于上海证券交易所),比如中芯国际(688981.SH)
港股:以0000开头,比如腾讯控股(00700.HK),需要用专门的港股数据接口获取数据
1.5.6 功能扩展:爬取多只股票的实时股价
上面的代码只能爬取一只股票的实时股价,我们可以扩展一下,让它能爬取多只股票的实时股价:
python

	import tushare as ts
	
	ts.set_token('你的Tushare Token')
	pro = ts.pro_api()
	
	# 定义要爬取的股票列表,格式为:[(股票代码, 股票名称), ...]
	stock_list = [
	('600519.SH', '贵州茅台'),
	('000001.SZ', '平安银行'),
	('300750.SZ', '宁德时代'),
	('601318.SH', '中国平安')
	]
	
	# 循环爬取每只股票的实时股价
	for stock_code, stock_name in stock_list:
	# 爬取最新1分钟K线数据
	min_data = pro.bar(ts_code=stock_code, freq='1min', count=1)
	# 提取实时股价
	current_price = min_data['close'].iloc[0]
	# 打印结果
	print(f'{stock_name}{stock_code})的实时股价:{current_price:.2f}元')

运行结果:

	贵州茅台(600519.SH)的实时股价:1850.50元
	平安银行(000001.SZ)的实时股价:15.80元
	宁德时代(300750.SZ)的实时股价:450.20元
	中国平安(601318.SH)的实时股价:55.30元

逐行讲解:
stock_list = [('600519.SH', '贵州茅台'), ...]:定义一个包含股票代码和名称的列表
for stock_code, stock_name in stock_list::循环遍历列表中的每只股票,分别获取代码和名称
后面的代码和之前的一样,只是把固定的股票代码换成了循环变量stock_code
1.5.7 功能再扩展:把实时股价保存到文件
我们还可以把爬取到的实时股价保存到文件中,方便后续查看:
python

	import tushare as ts
	import pandas as pd
	from datetime import datetime
	
	ts.set_token('你的Tushare Token')
	pro = ts.pro_api()
	
	stock_list = [
	('600519.SH', '贵州茅台'),
	('000001.SZ', '平安银行'),
	('300750.SZ', '宁德时代'),
	('601318.SH', '中国平安')
	]
	
	# 定义一个空列表,用于保存结果
	result_list = []
	
	# 获取当前时间
	current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
	
	for stock_code, stock_name in stock_list:
	min_data = pro.bar(ts_code=stock_code, freq='1min', count=1)
	current_price = min_data['close'].iloc[0]
	# 把结果添加到列表中
	result_list.append({
	'时间': current_time,
	'股票代码': stock_code,
	'股票名称': stock_name,
	'实时股价': current_price
	})
	
	# 把列表转成DataFrame
	result_df = pd.DataFrame(result_list)
	
	# 保存到CSV文件
	result_df.to_csv('实时股价数据.csv', index=False, encoding='utf_8_sig')
	print('实时股价数据已保存到文件:实时股价数据.csv')

运行结果:
实时股价数据已保存到文件:实时股价数据.csv
生成一个名为“实时股价数据.csv”的文件,内容如下:

	时间,股票代码,股票名称,实时股价
	2025-07-10 14:30:00,600519.SH,贵州茅台,1850.50
	2025-07-10 14:30:00,000001.SZ,平安银行,15.80
	2025-07-10 14:30:00,300750.SZ,宁德时代,450.20
	2025-07-10 14:30:00,601318.SH,中国平安,55.30

逐行讲解:
from datetime import datetime:导入datetime模块,用于获取当前时间
current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S'):获取当前时间,并格式化为“年-月-日 时:分:秒”的格式
result_list.append({...}):把每只股票的结果以字典的形式添加到列表中
result_df = pd.DataFrame(result_list):把列表转成DataFrame,方便保存到文件
result_df.to_csv('实时股价数据.csv', index=False, encoding='utf_8_sig'):
to_csv:把DataFrame保存为CSV文件
index=False:不保存行索引
encoding='utf_8_sig':解决中文乱码问题,确保CSV文件中的中文能正常显示
1.5.8 总结:你已经掌握了股票工具开发的核心逻辑
虽然这个工具功能简单,但它包含了Python股票工具开发的核心流程:
1.数据获取:通过Tushare接口获取股票数据
2.数据处理:提取需要的字段(比如实时股价)
3.结果输出:打印结果或保存到文件
从这个基础出发,你可以扩展出更复杂的工具:
爬取更多的股票数据(比如基本面数据、资金流向数据)
计算技术指标(比如均线、MACD)
开发选股工具、回测工具、交易工具等
下一节咱们就讲Python开发股票工具的环境搭建细节,帮你解决开发过程中遇到的各种环境问题。
 本站原创,转载请注明出处:https://www.xin3721.com/ArticlePrograme/csharp49691.html


相关教程