手动下载股票列表 更新日k数据
来源:互联网 发布:电子书朗读软件下载 编辑:程序博客网 时间:2024/04/28 00:25
#! /usr/bin/python2# coding=utf-8import urllib2import csvimport timefrom datetime import datetimefrom datetime import timedeltalist_code = []def get_stock_list(): list_name = ['sha.csv', 'shb.csv', 'sz.csv'] for name in list_name: try: csvfile = file(name, 'rb') reader = csv.reader(csvfile) for line in reader: try: # 忽略第一行 if reader.line_num == 1: continue list_code.append(line[0]) # print(' said: ', '') except ValueError: pass print name, locals() # csvfile.close() except IOError as err: # 使用as将异常对象,并将其赋值给一个标识符 print('File Error:' + str(err)) # ‘+’用于字符串直接的连接 finally: if 'csvfile' in locals(): csvfile.close() print "close"def day_plus(str): #now = datetime.now() day = datetime.strptime(str, "%Y-%m-%d") day_diff = timedelta(days=1) day = day + day_diff return daydef day_str_change(str): day = datetime.strptime(str, "%Y-%m-%d") return day.strftime('%Y%m%d')def find_data(code): str = "" if ('' == str ): str = "1970-1-1" return str'''def stock_header(code): url = 'http://quotes.money.163.com/service/chddata.html?code=' t1 = ('60', '900') t2 = ('000', '002', '300', '200') t3 = ('399001','399006') if code.startswith(t1): str = '0' + code elif code.startswith('000001'): str = 's_sh' + code elif code.startswith(t3): str = 's_sz' + code elif code.startswith(t2): str = '1' + code else: str = code print code url = url + str return url'''#'''def stock_header(code): url = 'http://table.finance.yahoo.com/table.csv?s=' t1 = ('60', '900') t2 = ('000', '002', '300', '200') t3 = ('399001','399006') if code.startswith(t1): str = code + '.ss' elif code.startswith('000001'): str = code + '.ss' elif code.startswith(t3): str = code + '.sz' elif code.startswith(t2): str = code + '.sz' else: str = code print code url = url + str return url#'''def deal_url(str_day, url): if ("1970-1-1"== str_day): print url return url; day = day_plus(str_day) now = datetime.now() print day.strftime('%Y%m%d'), now.strftime('%Y%m%d') if (day.strftime('%Y%m%d') >= now.strftime('%Y%m%d')): return "" #163 data Date Open High Low Close Volume Adj Close #str_url = url + '&start=' + day.strftime('%Y%m%d') + '&end=' + now.strftime('%Y%m%d') #yahoo data 日期 股票代码 名称 收盘价 最高价 最低价 开盘价 前收盘 涨跌额 涨跌幅 换手率 成交量 成交金额 总市值 流通市值 成交笔数 mon1 = int(now.strftime('%m')) - 1 mon2 = int(day.strftime('%m')) - 1 str_url = url + '&d=%s&e=%s&f=%s&g=d&a=%s&b=%s&c=%s&ignore=.csv' % ( str(mon1), now.strftime('%d'), now.strftime('%Y'), str(mon2), day.strftime('%d'), day.strftime('%Y')) #print str_url return str_urldef get_day(code, url): print code, url if ("" == url): print "---newst---date---------------------------------" return # url = 'http://quotes.money.163.com/service/chddata.html?code=1000002' # url = 'http://quotes.money.163.com/service/chddata.html?code=0601398&start=20000720&end=20150508' #url = 'http://table.finance.yahoo.com/table.csv?s=000002.sz' #url = 'http://table.finance.yahoo.com/table.csv?s=000002.sz&d=6&e=22&f=2006&g=d&a=11&b=16&c=1991&ignore=.csv' # url = 'http://hq.sinajs.cn/?list=sh600127' #http://market.finance.sina.com.cn/downxls.php?date=2016-10-28&symbol=sz300127 # print url req_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11', 'Accept':'text/html;q=0.9,*/*;q=0.8','Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3', 'Accept-Encoding':'gzip','Connection':'close','Referer':None #注意如果依然不能抓取的话,这里可以设置抓取网站的host } req_timeout = 500 #req = urllib2.Request(url,None,req_header) req = urllib2.Request(url) #print req # 如果不需要设置代理,下面的set_proxy就不用调用了。由于公司网络要代理才能连接外网,所以这里有set_proxy… # req.set_proxy('proxy.XXX.com:911', 'http') #socket = urllib2.urlopen(req,None,req_timeout) try: socket = urllib2.urlopen(req,None,req_timeout) #print socket content = socket.read() # content = socket.read().decode('GB18030') socket.close() except urllib2.HTTPError, e: print 'The server couldn\'t fulfill the request.' print 'Error code: ', e.code print 'Error reason: ', e.reason except urllib2.URLError, e: print 'We failed to reach a server.' print 'Reason: ', e.reason else: # everything is fine rows = content.split('\n') i = 0 for row in rows: if i == 0: i += 1 continue #忽略第一行 split_row = row.split(",") # split_row[1] = int(split_row[1]) # full_data.append(split_row) full_data = [] for row_s in split_row: if ("" == row_s): print "----------------------------------row null" full_data.append(row_s) print full_data if i == 20: break i += 1def get_day_list(code): str_day = find_data(code) print str_day url = stock_header(code) #print url url = deal_url(str_day, url) #print url get_day(code, url)if __name__ == '__main__': # ''' get_stock_list() print len(list_code) print list_code for code in list_code: get_day_list(code)#''' # get_day_list('000002')
0 0
- 手动下载股票列表 更新日k数据
- 根据股票列表 下载日k数据 存入mongodb
- 手动下载股票列表 存入mongodb 并更新名字
- Java股票数据下载
- 合并下载的股票数据
- 股票F10资料离线文件包带股票F10关键字过滤软件下载–更新于2014年03月11日
- 读取股票日K线数据文件的程序
- 股票涨跌预测方法之一:下载股票数据
- R语言-股票数据库(2)-股票日K线信息-未复权
- R语言-股票数据库(3)-股票日K线信息-前复权-Wind
- 利用golang并发下载股票数据(一)
- 手动下载android sdk更新包
- hibernate手动更新数据 查询数据与更新数据不同步
- DDE股票数据从实时备份到日历史数据.
- 百度股市通日k数据接口
- 股票K线统计,各个分钟线,日线,周线统计,sql示例
- 股票数据
- 股票数据
- Android 自定义View 时钟效果
- Java设计模式之——模板方法模式
- Python--正则表达式
- 111. Minimum Depth of Binary Tree
- 解决AppBarLayout中的RecycleView的滑动冲突
- 手动下载股票列表 更新日k数据
- CentOS6安装tftp服务器
- Android Studio遇到报错:cannot delete xxx file
- Linux下对内存的观察
- LeetCode学习篇十五——Unique Binary Search Trees
- linux下安装多个tomcat
- 实现QT与HTML页面通信
- 《算法》读书笔记(二)
- RichText