使用Tushare抓取股票数据,并存入数据库

安装anaconda

参考网络教程

启动Jupyter notebook

参考网络教程,并且启动HinterLand代码补全功能

安装Tushare包以及其他需要的包

 pip3 install Tushare -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

修改pip的国内源

(base) ➜  .pip cat ~/.pip/pip.conf 
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/ 
[install]
trusted-host=mirrors.aliyun.com

注册Tushare账号

旧的API即将过期,所以需要使用新的pro接口
https://tushare.pro/document/1?doc_id=131

注册以后,从个人信息当中获取token,使用代码注入token

import tushare as ts
import pandas as pd
token='50a123exasassas469b945911d7d8e57e1e098e8e1c6fddb0be722a5ce'
ts.set_token(token)

获取个股数据

pro = ts.pro_api()
stock = pro.daily(ts_code='600019.SH')
stock

例如:
在这里插入图片描述

安装数据库

brew install mysql

如果忘记mysql的密码,参考网页重置mysql的密码

http://www.kokojia.com/article/27027.html

将个股信息写入数据库

from sqlalchemy import create_engine 
#创建数据库链接
import pymysql
pymysql.install_as_MySQLdb()
mysql_conn = create_engine('mysql://root:111222ooo@127.0.0.1:3306/stock?charset=utf8&use_unicode=1')

stock.to_sql('stock_daily', mysql_conn, if_exists='append')

将个股数据写入到数据库stock中的stock_daily数据表

在这里插入图片描述

获取股票列表,并写入数据库

要遍历所有个股,必须现有个股列表

stock_list = pro.query('stock_basic', exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
stock_list.to_sql('stock_list', mysql_conn, if_exists='append')

将个股信息插入到stock_list数据表当中

遍历全部个股

# 遍历个股列表
stock_list['ts_code']
for i, v in stock_list['ts_code'].items():
#     print("index %s value %s" %(i, v))
#     if i == 10 :
    # 个股数据
    stock = pro.daily(ts_code=v)
    stock.to_sql('stock_daily', mysql_conn, if_exists='append')

这一步需要很多时间
在这里插入图片描述
基础用户每分钟调用500次,所以几千只个股的话,需要几分钟的时间才能导入到数据库当中

数据库建立以后,后面更新数据的时候,不用每次都全部抓下来,只抓取特定时间的数据即可,只受5000条数据记录的限制

启动定时任务更新数据库

这个部分需要启动一个crontab的任务,和一个可以执行的python程序

  • 获取股票列表,append到stock_list
  • 查询上次同步股票数据的时间,需要一个单独的数据表
  • 抓取从上次同步到最新的股票数据,append到stock_daily
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值