[python]沪深龙虎榜数据进一步处理,计算日后5日的涨跌幅
沪深龙虎榜数据进一步处理,计算日后5日的涨跌幅
事前数据:
前面处理得到的csv文件
文件名前加入“[wait]”等待程序处理
python代码从雅虎股票历史数据api获取数据,计算后面5日的涨跌幅
雅虎数据api格式:
priceUrl = 'http://table.finance.yahoo.com/table.csv?s={%1}&d={%2}&e={%3}&f={%4}&g=d&a={%5}&b={%6}&c={%7}&ignore=.csv'
# %1:000001.sz
# END: %2:月-1 %3:日 %4:年
# STRAT: %5:月-1 %6:日 %7:年
事前数据截图:
计算后,再用excel的条件格式并另存为excel文件后截图:
代码:
#coding=utf-8 #读取'[wait]'开头的csv文件
#copyright @ WangXinsheng
#http://www.cnblogs.com/wangxinsheng/
import os
import gzip
import re
import http.cookiejar
import urllib.request
import urllib.parse
import time
import datetime def getOpener(head):
# deal with the Cookies
cj = http.cookiejar.CookieJar()
pro = urllib.request.HTTPCookieProcessor(cj)
opener = urllib.request.build_opener(pro)
header = []
for key, value in head.items():
elem = (key, value)
header.append(elem)
opener.addheaders = header
return opener def ungzip(data):
try: # 尝试解压
print('正在解压.....')
data = gzip.decompress(data)
print('解压完毕!')
except:
print('未经压缩, 无需解压')
return data #常量
header = {
#'Connection': 'Keep-Alive',
'Accept': '*/*',
'Accept-Language': 'zh-CN,zh;q=0.8',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36',
'Accept-Encoding': 'gzip, deflate',
'Host': 'yahoo.com',
'Referer' : 'http://www.yahoo.com'
}
priceUrl = 'http://table.finance.yahoo.com/table.csv?\
s={%1}&d={%2}&e={%3}\
&f={%4}&g=d&a={%5}&b={%6}&c={%7}&ignore=.csv'
# %1:000001.sz
# END: %2:月-1 %3:日-1 %4:年
# STRAT: %5:月-1 %6:日 %7:年 path=r'.'
files = os.listdir(path)
files.sort()
out=[] for f in files:
if(f.startswith('[wait]') and
f.endswith('.csv')):
#读取文件
print('读取文件:'+path+'/'+f) f=open(path+'/'+f,'rt')
infos = f.readlines()
f.close() i = 0
add = False
for info in infos:
if(i==0):
i=i+1
info = info.replace('\n','')+',"一天后","二天后","三天后","四天后","五天后"\n'
out.append(info)
continue
elif(len(info.split(','))>9):
out.append(info)
continue
else:
#确认需要取的数据范围
tmp = info.split(',')
try:
timeArray = time.strptime(tmp[0], "%Y-%m-%d")
except:
timeArray = time.strptime(tmp[0], "%Y/%m/%d")
timeStamp = int(time.mktime(timeArray))
fromDay = datetime.datetime.utcfromtimestamp(timeStamp)
fromDay = fromDay + datetime.timedelta(days = 1)
endDay = fromDay + datetime.timedelta(days = 15)
code = tmp[1].replace('"','').replace("'","")
if(code.startswith('')):
code = code +'.ss'
else:
code = code +'.sz'
url = priceUrl.replace('{%1}',code).replace('{%2}',str(endDay.month-1))
url = url.replace('{%3}',str(endDay.day)).replace('{%4}',str(endDay.year))
url = url.replace('{%5}',str(fromDay.month-1)).replace('{%6}',str(fromDay.day))
url = url.replace('{%7}',str(fromDay.year))
print('抓取URL: '+url) #通过雅虎获取价格
dd = ''
try:
opener = getOpener(header)
op = opener.open(url)
data = op.read()
data = ungzip(data)
dd = data.decode()
except:
print('网络抓取失败')
out.append(info)
continue
#计算涨跌幅百分比
if(dd!=''):
dataInfo = dd.split('\n')
j=0
dayCount = 0
startPrice = 0
for x in range(len(dataInfo)-1,0,-1):
#处理数据
if(dataInfo[x]==''):
continue
#print(dataInfo[x])
if(dayCount>5):
break
di = dataInfo[x]
if(dayCount==0):
startPrice = float(di.split(',')[4])
elif(int(di.split(',')[5])!=0):
add = True
closeP = float(di.split(',')[4])
info = info.replace('\n','')+',"'+str(round((closeP-startPrice)/startPrice*100,2))+'%['+str(closeP)+']"'
#print(info)
if(dayCount==0 or int(di.split(',')[5])!=0):
dayCount=dayCount+1 if(add):
out.append(info+'\n')
#print(out)
continue
#输出
ff = open(path+'/'+f.name.replace('[wait]','[处理完了]'),'w')
for o in out:
ff.write(o)
ff.close()
print('处理完了\n文件地址:'+path+'/'+f.name.replace('[wait]','[处理完了]'))
else:
continue
[python]沪深龙虎榜数据进一步处理,计算日后5日的涨跌幅的更多相关文章
- [python]沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上
将沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上 原理:python读取前一次处理完的计算5日后涨跌幅输出的csv文件 文件名前加"[paint]" 安照通达信的画图文件和板 ...
- [python]数据整理,将取得的众多的沪深龙虎榜数据整一整
将昨日取得的众多的沪深龙虎榜数据整一整 提取文件夹内所有抓取下来的沪深龙虎榜数据,整理出沪深两市(含中小创)涨幅榜股票及前5大买入卖出资金净值,保存到csv文件 再手动使用数据透视表进行统计 原始数据 ...
- [python]初试页面抓取——抓取沪深股市交易龙虎榜数据
[python]抓取沪深股市交易龙虎榜数据 python 3.5.0下运行 没做自动建立files文件夹,需要手动在py文件目录下建立files文件夹后运行 #coding=utf-8 import ...
- python调用tushare获取沪深A股票资金流向数据
接口:moneyflow 描述:获取沪深A股票资金流向数据,分析大单小单成交情况,用于判别资金动向 限量:单次最大提取4000行记录,总量不限制 积分:用户需要至少1500积分才可以调取,基础积分有流 ...
- python量化之路:获取历史某一时刻沪深上市公司股票代码及上市时间
最近开始玩股票量化,由于想要做完整的股票回测,因此股票的上市和退市信息就必不可少.因为我们回测的时候必须要知道某一日期沪深股票的成分包含哪些对吧.所以我们要把沪深全部股票的上市时间.退市时间全部都爬下 ...
- python学习--大数据与科学计算第三方库简介
大数据与科学计算 库名称 简介 pycuda/opencl GPU高性能并发计算 Pandas python实现的类似R语言的数据统计.分析平台.基于NumPy和Matplotlib开发的,主要用于 ...
- python+tushare获取沪深港股通持股明细
接口:hk_hold 描述:获取沪深港股通持股明细,数据来源港交所. 限量:单次最多提取3800条记录,可循环调取,总量不限制 积分:用户积120积分可调取试用,2000积分可正常使用,单位分钟有流控 ...
- 毕设之Python爬取天气数据及可视化分析
写在前面的一些P话:(https://jq.qq.com/?_wv=1027&k=RFkfeU8j) 天气预报我们每天都会关注,我们可以根据未来的天气增减衣物.安排出行,每天的气温.风速风向. ...
- python爬取拉勾网数据并进行数据可视化
爬取拉勾网关于python职位相关的数据信息,并将爬取的数据已csv各式存入文件,然后对csv文件相关字段的数据进行清洗,并对数据可视化展示,包括柱状图展示.直方图展示.词云展示等并根据可视化的数据做 ...
随机推荐
- html 生成pdf
HTML生成PDF(c#) 最近因为工作需要,小小的研究了一下HTML生成PDF的方法,这方面的内容很多,但要么是不尽如人意的方法,要么就是那种收费的类库!为了广大.neter的福利,把自己的一点小小 ...
- 【WP开发】加密篇:双向加密
说起双向加密,如果以前在.NET开发中弄过加/解密的朋友都不会陌生,常用的算法有DES.AES等.在RT应用程序中,也提供了加密相关的API,算法自然是一样的,只是API的封装方式不同罢了,因为RT不 ...
- win8下IE10的鼠标mouse事件响应错误BUG
具体症状就是有时候鼠标左键响应,有时候右键才能响应 问题的原因就是事件对象的detail没有复位 https://github.com/clientside/amplesdk/issues/187
- Conversion Operators in OpenCascade
Conversion Operators in OpenCascade eryar@163.com Abstract. C++ lets us redefine the meaning of the ...
- C算法编程题系列
我的编程开始(C) C算法编程题(一)扑克牌发牌 C算法编程题(二)正螺旋 C算法编程题(三)画表格 C算法编程题(四)上三角 C算法编程题(五)“E”的变换 C算法编程题(六)串的处理 C算法编程题 ...
- [java] 更好的书写equals方法-汇率换算器的实现(4)
[java] 更好的书写equals方法-汇率换算器的实现(4) // */ // ]]> [java] 更好的书写equals方法-汇率换算器的实现(4) Table of Content ...
- ThinkPHP学习(一)
下载3.2框架后,解压缩到web目录下面,可以看到初始的目录结构如下: 3.2版本相比之前的版本自带了一个完整的应用目录结构和默认的应用入口文件,开发人员可以在这个基 础之上灵活调整.其中, Appl ...
- tomcat源码剖析系列
一个简单的web服务器 一个简单的servlet容器 连接器 创建httpRequest 创建HttpResponse 容器 生命周期 日志记录器 载入器 Session管理 关闭钩子 启动tomca ...
- 现代Web应用开发者必备的六大技能
过去,应用开发需要注重大量的专业知识,程序员只需关注单一的语言(比如COBOL.RPG.C++等),并利用该语言创建应用.而如今,时代在变迁.Web不再是单单关注独立的一面.相反,一个现代化的Web应 ...
- Block知识点总结
block的作用 block用于保存一段代码 在适当的时候再使用 它是一种数据类型 block的定义格式: 返回值 (^block变量名)(形参列表) = ^(形参列表) { 需要执行的代码}; ...