# encoding:utf8
#部分股票数据历史价格有误,尤其是2011年以前的数据,等一些历史数据
#无论是yahoo还是新浪的
__author__ = 'nooper'
import cStringIO
import csv
from bs4 import BeautifulSoup
from httpGet import httpGetContent
#年
years = ["2010", "2011", "2012", "2013"]
#季度
quarter = [1, 2, 3, 4]
def stock_day_history_sina(stock_code, year, qr):
"""
stockcode:股票代码
market:市场
year:2013
qr:季度1,2,3,4格式
货的股票历史数据
返回数据格式
日期2013-03-29
开盘:10.030
最高:10.210
停盘:10.130
最低9.910
数据量131028760
价格:1315731584
API:http://money.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/600000.phtml?year=2013&jidu=1
"""
#todo 没有复权价格
url = "http://money.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/%s.phtml?year=%s&jidu=%s"
% (stock_code, year, qr)
content = httpGetContent(url=url)
if content:
soap = BeautifulSoup(content)
table = soap.select('table#FundHoldSharesTable>tbody')
if table:
tr_list = table[0].select('tr')
for i, tr in enumerate(tr_list):
stock = {}
if i == 0 or i == 1:
continue
td_list = tr.select('td')
for j, td in enumerate(td_list):
if j == 0: #日期
stock['date'] = td.div.a.text
elif j == 1: #开盘价格
stock['start'] = float(td.div.text)
elif j == 2: #
stock['high'] = float(td.div.text)
elif j == 3:
stock['end'] = float(td.div.text)
elif j == 4:
stock['low'] = float(td.div.text)
elif j == 5:
stock['rate'] = int(round(int(td.div.text) / 100.0, 0))
elif j == 6:
stock['money'] = int(round(int(td.div.text) / 10000.0, 0))
yield stock
# todo 完成测试
def stock_day_history_Yahoo(code, market):
"""
雅虎股票数据接口
得到yahoo股票的历史数据信息
深市数据链接:http://table.finance.yahoo.com/table.csv?s=000001.sz
上市数据链接:http://table.finance.yahoo.com/table.csv?s=600000.ss
Date 日期
Open 开盘价格
High 最高价格
Low 最低价格
Close 结束价格
Volume 量
Adj Close 收盘加权价格
"""
if market not in ('sz', 'ss'):
return
url = "http://table.finance.yahoo.com/table.csv?s=%s.%s" % (code, market)
content = httpGetContent(url=url)
if content:
data = cStringIO.StringIO(content)
reader = csv.reader(data)
for i, row in enumerate(reader):
stock_dict = {}
if i == 0:
continue
stock_dict['date'] = row[0] # 日期
stock_dict['open'] = float(row[1]) # 开盘价格
stock_dict['high'] = float(row[2]) # 最高价格
stock_dict['low'] = float(row[3]) # 最低价格
stock_dict['close'] = float(row[4]) # 结束价格
stock_dict['volume'] = float(row[5]) # 量
stock_dict['adj_close'] = float(row[6]) # 几日收盘加权价格?
yield stock_dict
def main():
pass
# code = getStockDayHistoryByYahoo('601989', 'ss')
# for cod in code:
# print cod
if __name__ == "__main__":
main()
# encoding:utf8 |
|
|
|
#部分股票数据历史价格有误,尤其是2011年以前的数据,等一些历史数据 |
|
#无论是yahoo还是新浪的 |
|
|
|
|
|
__author__ = 'nooper' |
|
import cStringIO |
|
import csv |
|
|
|
from bs4 import BeautifulSoup |
|
|
|
from httpGet import httpGetContent |
|
|
|
|
|
#年 |
|
years = ["2010", "2011", "2012", "2013"] |
|
#季度 |
|
quarter = [1, 2, 3, 4] |
|
|
|
|
|
def stock_day_history_sina(stock_code, year, qr): |
|
""" |
|
stockcode:股票代码 |
|
market:市场 |
|
year:2013 |
|
qr:季度1,2,3,4格式 |
|
货的股票历史数据 |
|
返回数据格式 |
|
日期2013-03-29 |
|
开盘:10.030 |
|
最高:10.210 |
|
停盘:10.130 |
|
最低9.910 |
|
数据量131028760 |
|
价格:1315731584 |
|
API:http://money.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/600000.phtml?year=2013&jidu=1 |
|
""" |
|
#todo 没有复权价格 |
|
|
|
|
|
url = "http://money.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/%s.phtml?year=%s&jidu=%s" |
|
% (stock_code, year, qr) |
|
content = httpGetContent(url=url) |
|
if content: |
|
soap = BeautifulSoup(content) |
|
table = soap.select('table#FundHoldSharesTable>tbody') |
|
if table: |
|
tr_list = table[0].select('tr') |
|
for i, tr in enumerate(tr_list): |
|
stock = {} |
|
if i == 0 or i == 1: |
|
continue |
|
td_list = tr.select('td') |
|
|
|
for j, td in enumerate(td_list): |
|
if j == 0: #日期 |
|
stock['date'] = td.div.a.text |
|
elif j == 1: #开盘价格 |
|
stock['start'] = float(td.div.text) |
|
elif j == 2: # |
|
stock['high'] = float(td.div.text) |
|
elif j == 3: |
|
stock['end'] = float(td.div.text) |
|
elif j == 4: |
|
stock['low'] = float(td.div.text) |
|
elif j == 5: |
|
stock['rate'] = int(round(int(td.div.text) / 100.0, 0)) |
|
elif j == 6: |
|
stock['money'] = int(round(int(td.div.text) / 10000.0, 0)) |
|
yield stock |
|
|
|
|
|
# todo 完成测试 |
|
def stock_day_history_Yahoo(code, market): |
|
""" |
|
雅虎股票数据接口 |
|
得到yahoo股票的历史数据信息 |
|
深市数据链接:http://table.finance.yahoo.com/table.csv?s=000001.sz |
|
上市数据链接:http://table.finance.yahoo.com/table.csv?s=600000.ss |
|
Date 日期 |
|
Open 开盘价格 |
|
High 最高价格 |
|
Low 最低价格 |
|
Close 结束价格 |
|
Volume 量 |
|
Adj Close 收盘加权价格 |
|
""" |
|
if market not in ('sz', 'ss'): |
|
return |
|
url = "http://table.finance.yahoo.com/table.csv?s=%s.%s" % (code, market) |
|
content = httpGetContent(url=url) |
|
if content: |
|
data = cStringIO.StringIO(content) |
|
reader = csv.reader(data) |
|
for i, row in enumerate(reader): |
|
stock_dict = {} |
|
if i == 0: |
|
continue |
|
stock_dict['date'] = row[0] # 日期 |
|
stock_dict['open'] = float(row[1]) # 开盘价格 |
|
stock_dict['high'] = float(row[2]) # 最高价格 |
|
stock_dict['low'] = float(row[3]) # 最低价格 |
|
stock_dict['close'] = float(row[4]) # 结束价格 |
|
stock_dict['volume'] = float(row[5]) # 量 |
|
stock_dict['adj_close'] = float(row[6]) # 几日收盘加权价格? |
|
yield stock_dict |
|
|
|
|
|
def main(): |
|
pass |
|
# code = getStockDayHistoryByYahoo('601989', 'ss') |
|
# for cod in code: |
|
# print cod |
|
|
|
|
|
if __name__ == "__main__": |
|
main() |