构建股票量化数据库一.实时获取股票数据

实时获取股票数据

(1)实现步骤

1.通过网络爬虫–>爬取所需要的数据->股票实时价,最高价,最低价等等
2.通过python的->pandas库->进行数据整理清洗

(2)实现前的准备工作

神奇的网址
返回一个股票的数据:http://hq.sinajs.cn/list=sz000001,修改股票代码
在这里插入图片描述在这里插入图片描述上下正好一一对应.敲定了爬取内容剩下一切好办
返回一串股票的数据:http://hq.sinajs.cn/list=sh600000,sz000002,sz300001

(4)手撸代码

import requests   # 爬虫库
import pandas as pd  # 数据清洗库
"""在大范围爬取之前,很有必要先尝试一个小demo,测试一下所想和取得的是否对应
为了更全面测试这里分多种情况,正常股票sh600000退市股票:sh600002停牌股票:sz300124,除权股票:sh600276,上市新股:sz002952"""
stock_code_list = ["sh600000","sh600002","sz300124","sh600276","sz002952"]
url = "http://hq.sinajs.cn/list="+",".join(stock_code_list)
# 设置请求头
headers = {"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
           " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 			 Safari/537.36"}
response = requests.get(url).text # 获取的文本内容
content = response.strip()  # 把前后空白字符去除一下
data_line = content.split("\n")
data = [i.replace("var hq_str_"," ").split(",") for i in data_line]
df = pd.DataFrame(data,dtype=float)  # 创建DataFrame
df[0] = df[0].str.split('="')
df['stock_code'] = df[0].str[0].str.strip()
df["stock_name"] = df[0].str[-1].str.strip()
# del df[0]
df["candle_end_time"] = df[30]+" "+df[31]
df["candle_end_time"] = pd.to_datetime(df["candle_end_time"])
# 其中amount单位是股,volume单位是元
# 买1,卖1都有真心是不错的一个数据源
rename_dict={1:"开盘价",2:"pre_close",3:"收盘价",4:"最高价",5:"最低价",6:"买1价",7:"卖1价",8:"成交金额(元)",9:"成交量(股)",32:"状态"}
df.rename(columns = rename_dict,inplace=True)
df["状态"] = df["状态"].str.split('";').str[0]
df = df[["开盘价","pre_close","收盘价","最高价","最低价","买1价","卖1价","成交金额","成交量","状态","stock_code","stock_name","candle_end_time"]]
df

在这里插入图片描述得到以上的一个DataFrame格式的干净数据.

(5)异常情况

1.退市停牌股票
通过开盘价来剔除

df[df["开盘价"]-0<0.00001]

2.如何区分退市和停牌
查看状态信息: -3是退市状态 03是停牌状态
在这里插入图片描述3.当天新上市股票
注意:pre_close = 是股票发行价格

4.除权股票
当天除权,pre_close显示的是交易所所计算出来的价格61.78,分后后股票价格,而不是除权前一天正常的价格74.36,如果按照正常计算,涨跌幅就无法计算.
在这里插入图片描述在这里插入图片描述

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值