如何获取沪深股市历史数据并入库

如何获取沪深股市历史数据并入库采用Tushare大数据社区的数据接口,免费撸数据

大家好,又见面了,我是你们的朋友全栈君。

作为一个技术男,一开始总想着怎么去爬数据。然而一旦发现有免费的数据接口时,瞬间感觉爬来的不香了。。。

利用Tushare大数据社区的数据接口:
1、注册用户,并完善资料,以获取最低的积分要求;
2、获取token,作为获取数据的唯一凭证;
3、利用python脚本采集入库。
能力要求:
1、会使用mysql数据库
2、熟悉python基础语法

一、注册用户

(1)注册的操作很简单,参考平台的说明,注册完成后可获得100积分,链接如下:
https://tushare.pro/document/1?doc_id=38

(2)点击右上角的“个人主页”,然后点“个人资料”标签页,完善基本资料后可获得20积分。这样就能满足最低120积分要求。
(具体图示略)

二、获取token

在采集数据前,需要提供token进行身份认证,获取方法也很简单,参考平台说明:
https://tushare.pro/document/1?doc_id=39

三、获取数据并入库

接下来主要就是一套python代码的事了,下面以采集最近一年内日线数据为例做详细说明。

(1)连接自己的mysql库,创建目标表stock

CREATE TABLE `stock`  (
  `ts_code` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '股票代码',
  `trade_date` varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '交易日期',
  `pri_open` decimal(18, 2) NULL DEFAULT NULL COMMENT '开盘价',
  `pri_high` decimal(18, 2) NULL DEFAULT NULL COMMENT '最高价',
  `pri_low` decimal(18, 2) NULL DEFAULT NULL COMMENT '最低价',
  `pri_close` decimal(18, 2) NULL DEFAULT NULL COMMENT '收盘价',
  `pri_close_pre` decimal(18, 2) NULL DEFAULT NULL COMMENT '昨收价',
  `am_chg` decimal(18, 2) NULL DEFAULT NULL COMMENT '涨跌额',
  `pct_chg` decimal(18, 2) NULL DEFAULT NULL COMMENT '涨跌幅(未复权)',
  `vol` int NULL DEFAULT NULL COMMENT '成交量(手)',
  `amount` decimal(18, 2) NULL DEFAULT NULL COMMENT '成交额(千元)',
  INDEX `idx_sdl_code`(`ts_code`) USING BTREE,
  INDEX `idx_sdl_date`(`trade_date`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

(2)“python脚本上半部分”,导入包,提供token和mysql数据信息,注意第9行中,数据库的用户名、密码、ip、端口号、和数据库名要填全

import pymysql
import datetime
import tushare as ts
import pandas as pd
from sqlalchemy import create_engine

# 连接 tushare,获取行情数据
pro = ts.pro_api('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
engine = create_engine("mysql+pymysql://root:mima@192.168.99.99:3306/db2?charset=utf8")

# 打开数据库连接
db = pymysql.connect(host='192.168.99.99', port=3306, user='root', passwd='feng', db='db2', charset='utf8')

(3)“python脚本下半部分”,编写循环,每循环一次获取一天的数据,如果当天不是交易日则获取的数据为空。其中调用接口部分只有19和20两行代码。

# 获取当前日期
now = datetime.datetime.now()

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 循环365次,每次生成当前日期,作为入参获取当天数据
for i in range(1,366):

    delta = datetime.timedelta(days=i)
    n_days = now - delta
    rq = n_days.strftime('%Y%m%d')

    # 清空临时表
    sql1 = "truncate table stock_daily_basic"
    cursor.execute(sql1)

    # (Tushare数据接口)获取数据,然后插入到数据库临时表stock_daily_basic
    df = pro.daily(trade_date=rq)
    df.to_sql(name='stock_daily_basic',con=engine,if_exists='append',index=False)

    # 从临时表插入到目标表
    sql2 = "insert into stock select * from stock_daily_basic"
    cursor.execute(sql2)

    db.commit()

# 关闭数据库连接
db.close()

(4)连接mysql库,查看获取的数据
在这里插入图片描述

四、补充说明

以上只是按我个人习惯列举的简单例子,Tushare平台足够丰富,基本能支持大家的各种数据需求。
平台特点:

  • 拥有丰富的数据内容,如股票、基金、期货、数字货币等行情数据,公司财务、基金经理等基本面数据
  • SDK开发包支持语言,同时提供HTTP Restful接口,最大程度方便不同人群的使用
  • 提供多种数据储存方式,如Oracle、MySQL,MongoDB、HDF5、CSV等,为数据获取提供了性能保证
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152725.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Access数据库多表联合查询

    Access数据库多表联合查询Access数据库多表联合查询1、Access数据库多表联合查询,每次连接之前须将连接符前面的内容放在括号里面,示例如下:      select表a.字段1,表b.字段1,表c.字段1,表d.字段1from((表ainnerjoin表bon表a.字段=表b.字段)innerjoin表con表c.字段=表a.字段)innerjoin表don表a.

    2022年5月3日
    327
  • java分割String字符串成list

    java分割String字符串成list示例:Stringsn=“1234,567,8910”;List<String>snList=Arrays.asList(sn.split(“,”));

    2022年6月21日
    99
  • mos双向电平转换电路_二极管电平转换电路

    mos双向电平转换电路_二极管电平转换电路电平转换电路在电路设计中会经常用到,市面上也有专用的电平转换芯片,专用的电平转换芯片主要是其转换速度较快,多使用在速度较高的通讯接口,一般对速度要求不高的控制电路,则可使用此文介绍的分立器件搭建的电平转换电路。1、NPN三极管下图使用NPN三极管搭建的电平转化电路属于单向的电平转换信号发生器:3.3V,10k,50%,方波注意事项:(1)该电路的信…

    2022年8月10日
    5
  • android 从相册选择图片_android调用相册并显示图片

    android 从相册选择图片_android调用相册并显示图片publicclassMainActivityextendsAppCompatActivity{intREQUEST_CODE=0;privateNineGridImageViewngiv;privateArrayListphotos;privateDialogdialog;privatecn.com.jwtimes.www.jwtimes.mAdaptermAdapter1…

    2022年9月22日
    4
  • springboot集成Swagger2「建议收藏」

    springboot集成Swagger2「建议收藏」Swagger2简介 我们提供Restful接口的时候,API文档是尤为的重要,它承载着对接口的定义,描述等。它还是和API消费方沟通的重要工具。在实际情况中由于接口和文档存放的位置不同,我们很难及时的去维护文档。1.随项目自动生成强大RESTful API文档,减少工作量2.API文档与代码整合在一起,便于同步更新API说明3.页面测试功能来调试每个RESTful API…

    2022年6月13日
    28
  • 拓展人际关系

    拓展人际关系br nbsp nbsp 处朋友 在讲求效率和效益的商人口中 就成了 人脉 也许很多人都不太喜欢这个有些势利的词 但我觉得不管名称怎么换 能够做到以诚待人 与人为善就是好的 下文所说的几种方法 算是给大家指明了与人相处的几个方向 特别适合人很好但是 EQ 很低的人学习 br br nbsp nbsp nbsp nbsp 1 慷慨大气结交朋友 br br nbsp nbsp nbsp nbsp 与人相处的能力 如果能像糖和咖啡一样可以买得到的话 我会为这种能力多付一些钱 而美国人更有名言说 二十岁靠体力赚钱 那三十岁靠脑力赚钱 四十岁以后则靠交情赚钱

    2025年8月4日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号