python股票接口_python获取股票数据接口

# encoding: utf8

#部分网站api数据有bug,这个bug问题不是自身程序的问题,而是第三方公司股票的问题

__author__= 'nooper'import refrommath import ceil

import datetimefromhttpGet import httpGetContentfrom common import decimaldef _get_content(content):"处理腾讯股票数据接口信息"regex= re.compile(r'"(.*)"')

result=regex.findall(content)ifresult:return result[0].split('~')

def getStockPosition(code, market):"""处理股票盘口数据分析,分析所占的百分比率

http://qt.gtimg.cn/q=s_pksz000858

v_s_pksz000858="0.196~0.258~0.221~0.325";

以~分割字符串中内容,下标从0开始,依次为:0: 买盘大单1: 买盘小单2: 卖盘大单3: 卖盘小单

所占有的百分比百分比率""" ifcode and market:

url= "http://qt.gtimg.cn/q=s_pk%s%s" %(market, code)

content=httpGetContent(url)ifcontent:

result_list=_get_content(content)ifresult_list:

stock_dict={}

stock_dict["code"] =code

stock_dict["market"] =market

stock_dict["buy_big_percent"] = float(result_list[0]) # 买盘大单所占百分比

stock_dict["buy_small_percent"] = float(result_list[1]) # 买盘小单所占百分比

stock_dict["sell_big_percent"] = float(result_list[2]) # 卖盘大单所占比重

stock_dict["sell_small_percent"] = float(result_list[3]) # 买盘小单所占比重

stock_dict["date"] =datetime.date.today()returnstock_dict

# todo 数据对不上

def getStockCashFlow(code, market):"""得到股票是资金流入流出

http://qt.gtimg.cn/q=ff_sz000858

v_ff_sz000858="sz000858~41773.67~48096.67~-6322.99~-5.53~10200.89~14351.02~-4150.13~-3.63~114422.25~53015.90~59770.57~五 粮 液~20121221";

以~分割字符串中内容,下标从0开始,依次为:0: 代码1: 主力流入2: 主力流出3: 主力净流入4: 主力净流入/资金流入流出总和5: 散户流入6: 散户流出7: 散户净流入8: 散户净流入/资金流入流出总和9: 资金流入流出总和1+2+5+6

10: 未知11: 未知12: 名字13: 日期""" ifcode and market:

url= "http://qt.gtimg.cn/q=ff_%s%s" %(market, code)

content=httpGetContent(url)ifcontent:

result_list=_get_content(content)ifresult_list:

stock_dict={}

stock_dict["code"] =code

stock_dict["main_inflow"] = float(result_list[1]) # 主力流入

stock_dict["main_outflow"] = float(result_list[2]) # 主力流出

stock_dict["main_netflow"] = float(result_list[3]) # 主力净流入

stock_dict["small_inflow"] = float(result_list[5]) # 散户流入

stock_dict["small_outflow"] = float(result_list[6]) # 散户流出

stock_dict["small_netflow"] = float(result_list[7]) # 散户净流入

income= stock_dict["main_inflow"] + stock_dict["small_inflow"]

outcome= stock_dict["main_outflow"] + stock_dict["main_outflow"]

print income

print outcome

print income-outcome

stock_dict["unknown_1"] = float(result_list[10])

stock_dict["unknwon_2"] = float(result_list[11])

stock_dict["date"] = result_list[13] # 日期returnstock_dict

def getStockCurrentDay(code, Market):'''获取股票当日数据

腾讯API

API地址:http://qt.gtimg.cn/q=sh600383

sh:上海

sz:深圳

返回当天成交数据

code:股票代码

market:股票市场

数据返回@return dict''' ifcode and Market:

url= 'http://qt.gtimg.cn/q=%s%s' %(Market, code)

headers= {'Content-type': 'application/x-javascript; charset=GBK'}

result= httpGetContent(url=url, headers=headers, charset='gbk')ifresult:

stocklist=_get_content(result)ifstocklist:

stockdict={}

stockdict['code'] =code # 股票代码

stockdict['name'] = unicode(stocklist[1], 'utf8') # 股票名称

stockdict['last_closing'] = float(stocklist[4]) # 昨日收盘价格

stockdict['start'] = float(stocklist[5]) # 开盘价格

stockdict['end'] = float(stocklist[3]) # 当前收盘价格(可以是当前价格)

stockdict['high'] = float(stocklist[33]) # 最高价格

stockdict['low'] = float(stocklist[34]) # 最低价格

stockdict['buyvol'] = int(stocklist[7]) # 外盘 todo 数据对不上

stockdict["sellvol"] = int(stocklist[8]) # 内盘 todo 数据对不上

stockdict['range_price'] = float(stocklist[31]) # 涨跌价格

stockdict['range_percent'] = float(stocklist[32]) # 涨跌比%stockdict['volume'] = int(stocklist[6]) # 成交量(手)

stockdict['total_price'] = int(stocklist[37]) # 成交额(万元)

stockdict['change_rate'] = decimal(stocklist[38]) # 换手率

stockdict['pe'] = decimal(stocklist[39]) # 市盈率

stockdict['swing'] = float(stocklist[43]) # 振幅

stockdict['pb'] = float(stocklist[46]) # 股票市净率

stockdict['date'] = stocklist[30][:8] # 时间

stockdict["block"] = False if stockdict["start"] elseTrue #股票是否停牌returnstockdict

def getStockMarket(code):"""大盘数据接口信息

上证:code:000001 set=zs

深证:code:399001 set=zs

中小板:code:399005 set=zs

创业板: code:399006 set=zs

http://q.stock.sohu.com/qp/hq?type=snapshot&code=000001&set=zs

""" url = "http://q.stock.sohu.com/qp/hq?type=snapshot&code=%s&set=zs" %code

result= httpGetContent(url=url, charset="gbk")ifresult:

result=eval(result)

stock_dict={}

stock_dict["date"] = result[0][:10] #日期

stock_dict["name"] = unicode(result[2], 'utf8') #名称

stock_dict["range_price"] = float(result[4]) #上涨价格

stock_dict["range_percent"] = float(result[5].strip("%")) #涨幅

stock_dict["start"] = float(result[9]) #开盘价格

stock_dict["high"] = float(result[11]) #最高价格

stock_dict["low"] = float(result[13]) #最低价格

stock_dict["last_closing"] = float(result[7]) #昨日收

stock_dict["end"] = float(result[3]) #收盘价格

stock_dict["total_sum"] = int(result[18]) #多少万元

stock_dict["volume"] = int(result[14]) #多少手returnstock_dict

tonghuashun_headers={"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Encoding": "gzip,deflate,sdch","Accept-Language": "zh-CN,zh;q=0.8","Cache-Control": "no-cache","Connection": "keep-alive","Host": "qd.10jqka.com.cn","User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"}

# def getstockBlock():

#"""# 新浪股票黑名单数据

# ”需要得到单点登录信息“

#

# 新浪股票黑名单个股

# http://weibo.gxq.com.cn/stock/disallowStock

# """# headers ={

#'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

#'Cache-Control': "max-age=0",

#'Host': 'weibo.gxq.com.cn',

#'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36',

#'Cookie': "PHPSESSID=c32fbi3m3sf0he8v1rdem3t006; gxqSignId=02d9c361fe5fc1ab; WBStore=d6acd6adea5a82d3|undefined"#

# }

# url= "http://weibo.gxq.com.cn/stock/disallowStock"# content= httpGetContent(url=url, headers=headers)

#ifcontent:

# soup=BeautifulSoup(content)

# td_list= soup.find_all(text=re.compile('\d+'))

#returntd_list

def __convert_MIN(content):

content= content.split('=')[1]

content_list= content.split('|')

stock_dict={}for sub incontent_list:ifsub:

items= sub.split('~')

date= items[0]

price_list= items[1].split(';')

price_dict={}for a inprice_list:

b= a.split(',')

start= float(b[0]) #开盘价

high= float(b[1]) #最高价格

low= float(b[2]) #最低价格

end= float(b[3]) #结束价格

volum= int(ceil(float(b[4]))) #成交量多少买入

total_price= int(ceil(float(b[5]))) #成交额

time= b[6] #时间格式是1030,11:30,1400,1500price_dict[time]={"high": high,'low': low,"end": end,"start": start,"volumn": volum,"total_price": total_price

}

stock_dict[date]=price_dictreturnstock_dict

def getStock60MIN(code, market, type=''):"""不推荐向后复权

得到股票60分钟数据线

API接口数据

http://qd.10jqka.com.cn/api.php?p=stock_min60&info=k_sz_000005&fq=q

q是向前复权

b事项后复权

q=空是不复权""" if market not in ('sz', 'sh'):returnurl= "http://qd.10jqka.com.cn/api.php?p=stock_min60&info=k_%s_%s&fq=%s" %(market, code, type)

content= httpGetContent(url=url)ifcontent:return__convert_MIN(content)

def getStock30MIN(code, market, type=''):"""30分钟数据接口信息

http://qd.10jqka.com.cn/api.php?p=stock_min30&info=k_sz_000005&fq=

""" if market not in ('sz', 'sh'):returnurl= "http://qd.10jqka.com.cn/api.php?p=stock_min30&info=k_%s_%s&fq=%s" %(market, code, type)

content= httpGetContent(url=url)ifcontent:return__convert_MIN(content)

def getStock15MIN(code, market, type=''):"""15分钟数据接口

http://qd.10jqka.com.cn/api.php?p=stock_min15&info=k_sz_000005&fq=

""" if market not in ('sz', 'sh'):returnurl= "http://qd.10jqka.com.cn/api.php?p=stock_min15&info=k_%s_%s&fq=%s" %(market, code, type)

content= httpGetContent(url=url)ifcontent:return__convert_MIN(content)

def __convert_inner(stock, stock_dict={}):

stock_day= stock.split(',')ifall(stock_day):

date= stock_day[0] #日期

start= float(stock_day[1]) #开盘价格

high= float(stock_day[2]) #最高价格

low= float(stock_day[3]) #最低价格

end= float(stock_day[4]) #收盘价格

volume= int(ceil(float(stock_day[5]))) #成交量

total= int(ceil(float(stock_day[6]))) #成交额

stock_dict[date]={"date": date,'start': start,'high': high,'low': low,'end': end,'volume': volume,'total': total,

}returnstock_dict

def __convert_day(content):

stock_list= content.split('=')[1].split('|')

stock_dict={}for stock instock_list:ifstock and stock.strip():

__convert_inner(stock, stock_dict)

# stock_day= stock.split(',')

# date= stock_day[0] #日期

# start= stock_day[1] #开盘价格

# high= stock_day[2] #最高价格

# low= stock_day[3] #最低价格

# end= stock_day[4] #收盘价格

# volume= int(ceil(float(stock_day[5]))) #成交量

# total= int(ceil(float(stock_day[6]))) #成交额

# stock_dict[date]={

#"date": date,

#'start': start,

#'high': high,

#'low': low,

#'end': end,

#'volume': volume,

#'total': total,

# }returnstock_dict

def __convert_week(content):

content_list= content.split(';')

regex= re.compile('=(.*)$')

stock_dict={}for s incontent_list:

p= regex.findall(s)[0]

stock_list= p.split('|')for week instock_list:ifweek:

__convert_inner(week, stock_dict)returnstock_dict

#todo 测试完成

def getStockDayHistory(code, market, year='2013', type=''):""" http://qd.10jqka.com.cn/api.php?p=stock_day&info=k_sz_000005&year=2012,2013&fq=

sz:深证

sh:上海returndict""" url = "http://qd.10jqka.com.cn/api.php?p=stock_day&info=k_%s_%s&year=%s&fq=%s" %(market, code, year, type)

content= httpGetContent(url=url)ifcontent:return__convert_day(content)

#todo 测试完成

def getStockWeekHistory(code, market, year='2012,2013', type=''):""" xhttp://qd.10jqka.com.cn/api.php?p=stock_week&info=k_sz_000005&year=2011,2012,2013&fq=

pass""" url = "http://qd.10jqka.com.cn/api.php?p=stock_week&info=k_%s_%s&year=%s&fq=%s" %(market, code, year, type )

content=httpGetContent(url, tonghuashun_headers)ifcontent:return__convert_week(content)

def __convertMonth(content):

pass

def getStockMonthHistory(code, market, type=''):""" http://qd.10jqka.com.cn/api.php?p=stock_month&info=k_sz_000671&fq=

""" url = "http://qd.10jqka.com.cn/api.php?p=stock_month&info=k_%s_%s&fq=%s" %(market, code, type)

content=httpGetContent(url)ifcontent:

pass

def main():

# g= getStock60MIN('600847', 'sh')

#for k ing:

# print k

# print g[k]

# g= getStockDayHistory("600198", "sh")

# print g

# import config

#

# print getStockMarket(config.SHANGHAI)

print getStockCurrentDay("600383", "sh")if __name__ == "__main__":

main()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值