沪深龙虎榜数据进一步处理,计算日后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日的涨跌幅的更多相关文章

  1. [python]沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上

    将沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上 原理:python读取前一次处理完的计算5日后涨跌幅输出的csv文件 文件名前加"[paint]" 安照通达信的画图文件和板 ...

  2. [python]数据整理,将取得的众多的沪深龙虎榜数据整一整

    将昨日取得的众多的沪深龙虎榜数据整一整 提取文件夹内所有抓取下来的沪深龙虎榜数据,整理出沪深两市(含中小创)涨幅榜股票及前5大买入卖出资金净值,保存到csv文件 再手动使用数据透视表进行统计 原始数据 ...

  3. [python]初试页面抓取——抓取沪深股市交易龙虎榜数据

    [python]抓取沪深股市交易龙虎榜数据 python 3.5.0下运行 没做自动建立files文件夹,需要手动在py文件目录下建立files文件夹后运行 #coding=utf-8 import ...

  4. python调用tushare获取沪深A股票资金流向数据

    接口:moneyflow 描述:获取沪深A股票资金流向数据,分析大单小单成交情况,用于判别资金动向 限量:单次最大提取4000行记录,总量不限制 积分:用户需要至少1500积分才可以调取,基础积分有流 ...

  5. python量化之路:获取历史某一时刻沪深上市公司股票代码及上市时间

    最近开始玩股票量化,由于想要做完整的股票回测,因此股票的上市和退市信息就必不可少.因为我们回测的时候必须要知道某一日期沪深股票的成分包含哪些对吧.所以我们要把沪深全部股票的上市时间.退市时间全部都爬下 ...

  6. python学习--大数据与科学计算第三方库简介

    大数据与科学计算  库名称 简介 pycuda/opencl GPU高性能并发计算 Pandas python实现的类似R语言的数据统计.分析平台.基于NumPy和Matplotlib开发的,主要用于 ...

  7. python+tushare获取沪深港股通持股明细

    接口:hk_hold 描述:获取沪深港股通持股明细,数据来源港交所. 限量:单次最多提取3800条记录,可循环调取,总量不限制 积分:用户积120积分可调取试用,2000积分可正常使用,单位分钟有流控 ...

  8. 毕设之Python爬取天气数据及可视化分析

    写在前面的一些P话:(https://jq.qq.com/?_wv=1027&k=RFkfeU8j) 天气预报我们每天都会关注,我们可以根据未来的天气增减衣物.安排出行,每天的气温.风速风向. ...

  9. python爬取拉勾网数据并进行数据可视化

    爬取拉勾网关于python职位相关的数据信息,并将爬取的数据已csv各式存入文件,然后对csv文件相关字段的数据进行清洗,并对数据可视化展示,包括柱状图展示.直方图展示.词云展示等并根据可视化的数据做 ...

随机推荐

  1. [译]AngularJS中DOM操作

    再翻译一篇干货短文,原文:AngularJS jQuery 虽然Angularjs将我们从DOM的操作中解放出来了,但是很多时候我们还是会需要在controller/view加载之后执行一些DOM操作 ...

  2. GO语言的开源库

    Indexes and search engines These sites provide indexes and search engines for Go packages: godoc.org ...

  3. Android studio每次启动卡在fetching Android sdk compoment information的解决方案

    网上有人给出了方案:1)进入刚安装的Android Studio目录下的bin目录.找到idea.properties文件,用文本编辑器打开.2)在idea.properties文件末尾添加一行: d ...

  4. javascript四种类型识别的方法

    × 目录 [1]typeof [2]instanceof [3]constructor[4]toString 前面的话 javascript有复杂的类型系统,类型识别则是基本的功能.javascrip ...

  5. c++堆

    c++ reference: http://www.cplusplus.com/reference/algorithm/make_heap/ heap并不属于STL容器组件,它分为 max heap ...

  6. spring整合hibernate的时候报异常org.hibernate.HibernateException: createQuery is not valid without active transaction

    在整合Spring4+hibernate4时候,当代码执行到dao中CRUD操作时,报了一个异常, org.hibernate.HibernateException: createQuery is n ...

  7. 移动端用js与jquery实时监听输入框值的改动

    背景: 在一次移动端H5开发中,需要监听输入框值的实时变动. onchange事件肯定抛弃,因为只能失去焦点才触发. 而keyPress在Android可以触发,iOS不可以. 又不想用Android ...

  8. Service组件简介

    Service是一个应用程序组件,没有图形化界面,通常用来处理一些耗时较长的操作,可以用Service更新ContentProvider,发送Intent以及启动系统的通知等等.Service并不是一 ...

  9. jsonp协议原理深度解析

    前言 今天在开发联调的过程中,需要跨域的获取数据,因为使用的jquery,当然使用dataType:'jsonp'就能够很easy的解决了.但是因为当时后端没有支持jsonp来访问,后来他在实现这个功 ...

  10. 淘宝购物车页面 智能搜索框Ajax异步加载数据

    如果有朋友对本篇文章的一些知识点不了解的话,可以先阅读此篇文章.在这篇文章中,我大概介绍了一下构建淘宝购物车页面需要的基础知识. 这篇文章主要探讨的是智能搜索框Ajax异步加载数据.jQuery的社区 ...