历史股价查询(使用Python获取历史股价信息的几种方式)

历史股价查询。通过编程获取历史股价的方式很多,但是免费的方式可以简单地分为四类:使用某种网友开发的插件: 比如Python就有TuShare, akshare, 这种只需要写几行代码就能获取,但是不同的库有不同的利弊。比如TuShare中有很多数据需要一定的积分才能获取。通过API接口,比如新浪,腾

历史股价查询(使用Python获取历史股价信息的几种方式)

历史股价查询。通过编程获取历史股价的方式很多,但是免费的方式可以简单地分为四类:

使用某种网友开发的插件: 比如Python就有TuShare, akshare, 这种只需要写几行代码就能获取,但是不同的库有不同的利弊。比如TuShare中有很多数据需要一定的积分才能获取。

通过API接口,比如新浪,腾讯等等。

从专门的行情软件上面提取数据。

从财经网站上面爬取行情数据。

使用TuShare获取股价

TuShare是非常方便使用的, 比如在官网拿到Token后, 一行调用就可以获取股价信息:

import tushare as ts

ts.set_token(‘***’)

pro = ts.pro_api()

price = ts.pro_bar(ts_code=’000020.SZ’, start_date=’2022-09-01′,\

end_date=’2022-09-09′)

price

结果如图:

通过API获取价格信息

新浪API

接口

描述

http://hq.sinajs.cn/list= + 股票代码

当日行情

http://hq.sinajs.cn/list=s_+ 股票代码

实时行情

请求例子:

import requests

stock_code = ‘sh600031,sz300866’

header = { ‘referer’: ‘http://img.jzgzf.com/202308/03/11/ozjqvhnrbpy’ }

# 当日行情接口

response = requests.get(f’http://hq.sinajs.cn/list={stock_code}’, headers=header)

print(response.text)

结果

var hq_str_sh600031=”三一重工,15.750,15.750,16.260,16.310,15.660,16.260,16.270,

105649444,1702155639.000,6161,16.260,870579,16.250,132500,16.240,87700,16.230,

103100,

16.220,400510,16.270,328600,16.280,198700,16.290,795400,16.300,548100,16.310,2022-09-09,15:00:00,00,”;var hq_str_sz300866=”安克创新,59.250,58.620,59.150,59.420,57.850,59.150,59.160,

1703977,100420830.250,700,59.150,300,59.140,300,59.130,2000,59.120,7400,59.110,

300,

59.160,2000,59.170,2700,59.190,700,59.200,400,59.250,2022-09-09,15:35:00,00,D|0|0.000″;

以上数据用,分割字符串中的内容,下标从0开始,依次为:

标号

内容

标号

内容

0

股票名字

1

当天开盘价

2

昨日收盘价

3

当天收盘价

4

当天最高价

5

当天最低价

指数也可以用这种方式获取。但是无法获取历史的股价信息。如果某天没有及时同步到本地数据库,就无法使用该接口获取那天的数据。接口可以一定性请求多个股票代码,用,隔开,不能有空格。

另外,这个接口现在一定要添加请求头:

header = { ‘referer’: ‘http://img.jzgzf.com/202308/03/11/ozjqvhnrbpy’ }

不然就会报错,提示:

Kinsoku jikou desu!

也就是日本语“禁止访问”的意思。很艺文!

腾讯API

接口

描述

http://img.jzgzf.com/202308/03/11/uz4phtxqroo + 股票代码

最新行情

http://img.jzgzf.com/202308/03/11/uz4phtxqrooff_ + 股票代码

获取实时资金流向

http://img.jzgzf.com/202308/03/11/uz4phtxqroos_pk + 股票代码

盘口分析

http://img.jzgzf.com/202308/03/11/uz4phtxqroos_sh + 股票代码

简要信息

请求例子:

import requests

stock_code = ‘sh600031,sz300866’

# 当日行情接口

response = requests.get(f’http://img.jzgzf.com/202308/03/11/uz4phtxqroo{stock_code}’, timeout=6)

print(response.text)

结果

v_sh600031=”1~三一重工~600031~16.26~15.75~15.75~1056494~612059~444435~16.26~

62~16.25~8706~16.24~1325~16.23~877~16.22~1031~16.27~4005~16.28~3286~16.29~1987~

16.30~7954~16.31~5481~~20220909160001~0.51~3.24~16.31~15.66~

16.26/1056494/1702155639~1056494~170216~1.24~30.06~~16.31~15.66~4.13~1381.01~

1381.01~2.20~17.33~14.18~2.47~-10712~16.11~26.21~11.48~~~1.51~170215.5639~0.0000~

0~ ~GP-A~-27.26~4.16~2.75~7.32~3.17~28.30~14.13~4.77~-3.21~-9.62~8493286021~

8493286021~-30.86~-29.80~8493286021~~~-41.60~0.06~”;

v_sz300866=”51~安克创新~300866~59.15~58.62~59.25~17040~9711~7329~59.15~7~59.14~3~

59.13~3~59.12~20~59.11~74~59.16~3~59.17~20~59.19~27~59.20~7~59.25~4~~20220909161451~

0.53~0.90~59.42~57.85~59.15/17040/100420830~17040~10042~1.13~20.92~~59.42~57.85~

2.68~89.46~240.40~3.82~70.34~46.90~0.70~46~58.93~20.88~24.49~~~1.45~10042.0830~

0.0000~0~ AR~GP-A-CYB~-41.84~-3.30~1.35~18.25~13.07~128.07~48.89~-6.41~-13.66~

-5.83~151240045~406427207~27.38~-46.32~151240045~~~-45.35~-0.03~”;

以上数据用~分割字符串中的内容,下标从0开始,依次为:

标号

内容

标号

内容

0

未知

1

股票名字

2

股票代码

3

当前价格

4

昨收

5

今开

6

成交量(手)

7

外盘

8

内盘

9

买一

10

买一量(手)

11-18

买二

19

卖一

20

卖一量

21-28

卖二

29

最近逐笔成交

30

时间

31

涨跌

32

涨跌%

33

最高

34

最低

35

价格/成交量(手)/成交额

36

成交量(手)

37

成交额(万)

38

换手率

39

市盈率

40

41

最高

42

最低

43

振幅

44

流通市值

45

总市值

46

市净率

47

涨停价

48

市净率

弊端就是哪天接口被禁用了,这种方式就用不了了。

从专门的行情软件上面提取数据

通达信

通达信是使用非常广泛的行情软件,其公司财富趋势已经在港交所上市。在通达信软件上下载行情后,数据会下载到本地(至少此时2022-09-10是这样)。数据在通达信的安装目录下:

可以使用程序读出来。附完整解析代码:

import struct

import datetime

class stock_price:

def __init__(self, stock_date, stock_open, stock_high,\

stock_low, stock_close, stock_amount, stock_vol):

self.stock_date = stock_date

self.stock_open = stock_open

self.stock_high = stock_high

self.stock_low = stock_low

self.stock_close = stock_close

self.stock_amount = stock_amount

self.stock_vol = stock_vol

def get_stock_price(filepath):

data = []

with open(filepath, ‘rb’) as f:

while True:

stock_date = f.read(4)

stock_open = f.read(4)

stock_high = f.read(4)

stock_low= f.read(4)

stock_close = f.read(4)

stock_amount = f.read(4)

stock_vol = f.read(4)

stock_reservation = f.read(4)

if not stock_date:

break

stock_date = struct.unpack(“l”, stock_date) # 4字节 如20220909

stock_open1 = struct.unpack(“l”, stock_open) #开盘价*100

stock_high1 = struct.unpack(“l”, stock_high) #最高价*100

stock_low= struct.unpack(“l”, stock_low) #最低价*100

stock_close = struct.unpack(“l”, stock_close) #收盘价*100

stock_amount = struct.unpack(“f”, stock_amount) #成交额

stock_vol = struct.unpack(“f”, stock_vol) # 成交量

stock_reservation = struct.unpack(“f”, stock_reservation) #保留值

date_format = datetime.datetime.strptime(str(stock_date[0]),\

‘%Y%M%d’) #格式化日期

data.append(stock_price(date_format.strftime(‘%Y-%M-%d’),

stock_open1[0]/100.0,

stock_high1[0]/100.0,\ stock_low[0]/100.0, stock_close[0]/100.0, stock_amount[0]/100.0, \

stock_vol[0]/100.0))

return data

找一个文件试试:

data_list = get_stock_price(‘./sz000002.day’)

print(f’交易日期: {data_list[-1:][0].stock_date}’)

print(f’开盘价: {data_list[-1:][0].stock_open}’)

print(f’最高价: { data_list[-1:][0].stock_high}’)

print(f’最低价: { data_list[-1:][0].stock_low}’)

print(f’收盘价: { data_list[-1:][0].stock_close}’)

输出:

交易日期: 2022-09-09

开盘价: 17.49

最高价: 18.39

最低价: 17.41

收盘价: 18.15

在同花顺里面验证了下价格信息,是正确的。不过这种方式的弊端在于,需要手工在通达信里面执行更新数据的操作,并且通达信在未来某天变更了读写文件的方式,这种方式就不能用了。其它的软件也是类似的。这里要注意的是,如果需要读取指数的信息,

struct.unpack(“l”, stock_open)

这行代码里面的格式需要变动一下,目前变成

struct.unpack(“f”, stock_open)

即可。

从财经网站上面爬取行情数据

这种是最靠谱的方式的,但是实现也是比较繁琐的,某种程度上,也有法律上面的风险,参考:中国爬虫违法违规案例汇总 (

https://github.com/HiddenStrawberry/Crawler_Illegal_Cases_In_China)。股票价格数据都是公开的,不是什么隐私,但是程序写的不好,把目标网站爬宕机了,就有法律风险了。上面例子中的新浪API接口还是很稳定,支持高并发的。貌似可能是某个性能高手开发的, 参考: 杨建:网站加速–服务器编写篇(上)(https://blog.csdn.net/lishenglong666/article/details/39028093), 原文不见了,放个转载。

提供股价信息的部分网站

雪球, https://xueqiu.com

集思录, https://www.jisilu.cn/

巨潮资讯网, http://www.cninfo.com.cn

百度股市通, https://gushitong.baidu.com

东方财富网, https://www.eastmoney.com/

同花顺, https://www.10jqka.com.cn/

……

声明:该文观点仅代表作者本人,《家在公租房生活网》系信息发布平台,家在公租房生活网仅提供信息存储空间服务。
(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫

相关推荐

  • 力争到2027年我国制造业质量水平显著提升

    记者20日从工业和信息化部获悉,工业和信息化部、国家发展改革委、金融监管总局三部门联合印发《制造业卓越质量工程实施意见》,加快建设制造强国、质量强国,以制造业卓越质量工程实现产品高质量、企业现代化、产业高端化。 《实施意见》在发展目标中提到,到2025年,我国制造业质的有效提升取得积极进展,企业质

    2023年12月21日
    00
  • 苏珊米勒天秤座月运势(苏珊米勒2021年天秤座运势完整版)

    苏珊米勒天秤座月运势,十一月秋意浓,我能感觉到盛夏已经悄然离去。在这个秋高气爽的季节,很多人精神都很好,所以这个月大家都会更加努力。为了今年有一个幸福的结局,运势很重要。我们来看看苏珊米勒的《天秤座每月运势》。详细讲解2023年11月运势。苏珊米勒2023年11月星座运气天秤座——译者:波沫Aph

    百科 2023年11月19日
    00
  • 野心勃勃是什么生肖动物(十二生肖鼠

    野心勃勃是什么生肖动物?鼠01一生运势鼠年生人,为天贵星,性格非常聪明伶俐,凡事宜有心德,此人志愿颇高,利欲心很强,颇有成就,且有积蓄财富,一生多幸福,不过贵星太多,防欺人太甚,到时则会如命理所说:“四贵克子孙”,多与人和睦,到中年运到来风调雨顺,一切所谋遂意,到老年万事达到成功境界,此时得荣华富贵

    百科 2023年7月6日
    00
  • hesida服装是什么牌子,电脑品牌攀升标志

    大家好,今天小编关注到一个比较有意思的话题,就是关于电脑品牌攀升标志的问题,于是小编就整理了4个相关介绍电脑品牌攀升标志的解答,让我们一起看看吧。1、亨悦电脑和攀升电脑哪个好?2、hesida服装是什么牌子?3、C919首飞成功标志着什么?4、hisea衣服是什么牌子?亨悦电脑和攀升电脑哪个好?亨悦

    2024年2月8日
    00
  • 骨伽竖显卡,骨伽竖显卡

    大家好,今天小编关注到一个比较有意思的话题,就是关于骨伽竖显卡的问题,于是小编就整理了1个相关介绍骨伽竖显卡的解答,让我们一起看看吧。1、骨伽影武者x5机箱5000的预算怎么配?骨伽影武者x5机箱5000的预算怎么配?骨伽影武者x5机箱5000的预算配法1、处理器和主板CPU选择的是锐龙中端旗舰芯片

    6天前
    00
  • 茶渡泰虎能力来源(《死神》中的一拳超人

    茶渡泰虎能力来源。《死神》中的许多角色都有着比较强大的能力,除了死神之外,也有很多的特殊存在。茶渡泰虎就是其中的一个,茶渡泰虎是男主角黑崎一护的战友,茶渡泰虎是印第安人血统,是完现术者。平时沉默寡言,性情温和,但为朋友可以奋不顾身。在千年血战落幕后成为了知名拳击手。茶渡泰虎由于受到一护的灵力影响,启

    百科 2023年6月21日
    00

发表回复

登录后才能评论
关注微信

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:296358331@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息