最近在对日线进行分析回测时,需要用到股票的复权因子,因为TuShare的复权因子并没有提供公开调用API,这里考虑从Sina下载并解析。

主要参考了这篇文章:用Python从sina下载复权因子

新浪财经的复权因子数据例子,例如600000股票2017年第一季度复权因子在这里:http://vip.stock.finance.sina.com.cn/corp/go.php/vMS_FuQuanMarketHistory/stockid/600000.phtml?year=2017&jidu=1

print '\xc0\xfa\xca\xb7\xbd\xbb\xd2\xd7'.decode('GB2312') #将GB2312编码打印出汉字

import numpy as np
import pandas as pd
import tushare as ts
import datetime
import time
import tushare as ts
import os
import urllib2 #urllib2是Python的一个获取URLs的组件
import re #python的正则表达式模块#global variables
data_dir = 'D:\\python_study\\stock_hist_data\\'  #下载数据的存放路径
sleep_time=2 #default 2s#找到特定str所在的那一行
def find_str(str_list, str):idx = -1row = 0for l in str_list:        idx = l.find(str)if idx != -1:breakrow += 1return row#第二类解析
def deco_url2(url_list, str):s='\xc0\xfa\xca\xb7\xbd\xbb\xd2\xd7begin-->'  #开始标志:历史交易begin-->e='\xc0\xfa\xca\xb7\xbd\xbb\xd2\xd7end-->'    #结束标志:历史交易end-->s_idx = find_str(url_list, s)e_idx = find_str(url_list, e)factor=[]if e_idx - s_idx == 966-899:  #这一行没看懂,返回空的因子listreturn factorelse:x='\xbc\xbe\xb6\xc8\xb8\xb4\xc8\xa8\xc0\xfa\xca\xb7\xbd\xbb\xd2\xd7'  #查找'季度复权历史交易'x_idx=find_str(url_list,x)time_row=x_idx+17 #加17找到有日期的那一行, 这些加多少完全是根据网页源码显示的来手工数出来的,写的此时我也不知道更高级点的做法该怎么做factor_row=x_idx+26 #加26找到有因子的那一行delta = 14   #加14找到下一天因子行while factor_row <= e_idx-7:t = url_list[time_row][-14:-4]#print t, url_list[factor_row-1]f_re = re.search('\d+(\.\d*)?',url_list[factor_row])temp = t+','+f_re.group()+','+strfactor.append(temp.strip())time_row += deltafactor_row += deltareturn factor#第一类解析
def deco_url1(url_list, str):s='\xc0\xfa\xca\xb7\xbd\xbb\xd2\xd7begin-->'e='\xc0\xfa\xca\xb7\xbd\xbb\xd2\xd7end-->'s_idx = find_str(url_list, s)e_idx = find_str(url_list, e)factor=[]if e_idx - s_idx == 966-899:return factorelse:x='\xbc\xbe\xb6\xc8\xb8\xb4\xc8\xa8\xc0\xfa\xca\xb7\xbd\xbb\xd2\xd7'x_idx=find_str(url_list,x)time_row=x_idx+18factor_row=x_idx+26delta = 14while factor_row <= e_idx-7:if delta == 14:t = url_list[time_row-1][5:15]if delta == 11:t = url_list[time_row-1][6:16]#print t, url_list[factor_row-1]f_re = re.search('\d+(\.\d*)?',url_list[factor_row-1])if f_re == None:time_row -= 2factor_row -= 3delta = 11ti = url_list[time_row-1].find('2')t = url_list[time_row-1][ti:(10+ti)]#print url_list[factor_row-1]f_re = re.search('\d+(\.\d*)?',url_list[factor_row-1])temp = t+','+f_re.group()+','+strfactor.append(temp.strip())time_row += deltafactor_row += deltareturn factor
#获取感兴趣的所有股票信息,这里只获取沪深300股票
def get_all_stock_id():stock_info=ts.get_hs300s()return stock_info['code'].values#sample: get_former_right_factor('000001', 2017, '1')
def get_former_right_factor(sym, year, jidu):global sleep_time,data_dir  l1="http://vip.stock.finance.sina.com.cn/corp/go.php/vMS_FuQuanMarketHistory/stockid/"l2=".phtml?year="l3="&jidu="str_year = str(year)file_path = data_dir + sym + '\\' + str(year) + '\\'file_name = str(year) + '_' + jidu + '_factor.txt'if not os.path.exists(file_path):  os.makedirs(file_path)  if not os.path.exists(file_path+file_name):         link=l1 + sym + l2 + str(year) + l3 + jidutry:url_test = urllib2.urlopen(link)except IOError, msg:  print str(msg).decode('UTF-8')  sleep_time=min(sleep_time*2, 512)#每次下载失败后sleep_time翻倍,但是最大512s (新浪为防止恶意查询设置的封禁间隔为6min=360s)  print 'Get factor data error: symbol: '+ sym + ', year: ' + str_year + ', jidu: ' + jidu + ', sleep time is: '+str(sleep_time)  return True  else:  url_content = url_test.readlines()time = str(year)+jidu#if time >= '20062':#    s = deco_url1(url_content,sym)#else:s = deco_url2(url_content,sym) #save to filesfobj= open(file_path + file_name, 'w')for ss in s:fobj.write(ss+'\n')fobj.close()sleep_time=max(sleep_time/2, 2) #每次成功下载后sleep_time变为一半,但是至少2s  return Trueyears=range(2010,2017,1)
stocks=get_all_stock_id()
for stock in stocks:for year in years:for jd in ['4','3','2','1']:  #一年四个季度get_former_right_factor(stock, year, jd)time.sleep(sleep_time)

用Python从新浪下载A股复权因子信息相关推荐

  1. python a股行情_使用Python下载A股行情的几种方法

    使用Python下载A股行情的几种方法 1. tushare Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分 ...

  2. python新浪股票接口 2019_用python爬虫进行新浪腾讯股票数据采集

    今天带给大家的是从新浪和腾讯爬取股票数据,主要是因为新浪和腾讯的股票数据存储在js中,不需要再重新解析网页源码方便很多. 今天我们要实现的股票爬取设计内容丰富,包括: 1.一个股票数据(沪深)爬虫和选 ...

  3. python利用tushare下载数据并计算当日收益率

    python利用tushare下载数据并计算当日收益率 计算股票收益率的程序主要有以下几部分构成: 1.获取股票接口数据函数:pro_daily_stock() 2.计算收益率函数:cal_stock ...

  4. python怎么批量下载年报_Python+Wind 批量下载上市公司年报 - Part 1/2

    Python+Wind 批量下载上市公司年报 - Part 1/2作者:张捷 目录1.背景介绍 2.安装Python 3.爬取万得上市公司年报3.1Wind下载公告信息 3.2获得年报地址 4.使用P ...

  5. python自动下载qq文件夹_GitHub - 1061700625/QQZone_AutoDownload_Album: Python+selenium 自动下载QQ空间相册...

    QQZone_AutoDownload_Album Python+selenium 自动下载QQ空间相册 . selenium_firefox.zip 需要解压后放在同路径下 . 貌似腾讯的登陆加密做 ...

  6. Python系统的下载与安装教程

     要使用 Python 语言进行程序开发,必须安装其开 发环境,即Python 解释器.  安装前先要从Python官网下载Python 系统文件, 下载地址为https://www.python ...

  7. python爬虫下载-python爬虫之下载文件的方式总结以及程序实例

    python爬虫之下载文件的方式以及下载实例 目录 第一种方法:urlretrieve方法下载 第二种方法:request download 第三种方法:视频文件.大型文件下载 实战演示 第一种方法: ...

  8. python编辑器安卓下载-Python的下载安装与Python编辑器的安装

    在此特别鸣谢kamael,本文内容由kamael提供. 各位朋友大家好,我是章鱼(认识我的都喜欢这么叫我).今天我就来当当广大Python初学者的救星--交大家如何安装Python与编辑器以及编辑器的 ...

  9. python官网下载步骤64位-windows下载并安装Python的具体步骤

    安装Python 下载并安装Python Python 的官网是 www.python.org,我们可以直接从官网下载 Python.这里介绍在微软Windows和苹果Mac OS两种系统中的安装方式 ...

最新文章

  1. Android UI 统一修改Button控件的样式,以及其它系统控件的默认样式
  2. OpenCV边缘检测专题
  3. Inserting/Removing shutters and filters
  4. 2、数据库需求分析阶段详解
  5. 讲义not have data_“熟记英语300句 中考英语无忧虑”讲练(089)讲义文本
  6. 6-12mysql库的操作
  7. wordpress mysql 密码重置_WordPress忘记密码找回登录密码的四种行之有效的方法
  8. javascript md5加密算法
  9. 【OSGI】Error osgi xx Invalid value for DynamicImport-Package dynamic.import.pack
  10. Spring-core-ClassUtils类
  11. SQL Server 合并复制遇到identity range check报错的解决
  12. linux中的strip命令简介------给文件脱衣服
  13. 浪潮服务器bios更改硬盘模式,bios更改硬盘模式详细教程
  14. 华人操作系统项目列表
  15. 重构改善既有代码的设计 --原则篇
  16. 如何查看MySQL的表空间
  17. 使用容联云Celery异步发送短信验证码
  18. Spark GraphX-航班飞行网图分析
  19. i3 10100和i5 10400的区别
  20. HR面试经验总结 | HR面试常问问题

热门文章

  1. Beatiful Soup
  2. Java 封装基础知识
  3. 策略模式+工厂模式的组合使用
  4. 2013年搜索引擎盘点,爱恨交加
  5. 求圆环的面积 C语言
  6. elasticsearch :unassigned错误解决
  7. 6 流水线处理器题库
  8. 小狐狸ChatGPT付费创作系统1.6.8独立开源版 + 公众号H5+小程序+VUE源码安装配置详细教程
  9. 玫琳凯公司与大自然保护协会合作,促进墨西哥湾可持续渔业发展
  10. 如何屏蔽SIGPIPE信号