最近因为投资分析需要接触R语言,需要获取A股上市公司数据。从同花顺下载效率太低,就到处找途径。分享下方法,共其他小白参考,请大神指正。

R语言自带的quantmod数据不错,不过国内A股数据不全,而且时常出错,而且由于谷歌已经终止了提供财务数据,更影响了使用,因此只能作为不错。当然,雅虎财经最近也上线了财务数据板块,不过个人还不懂得爬虫抓取,还等大神分享方法。

网上也有一些讲解从新浪财经抓取数据的方法,不过个人觉得还是从网易财经抓取股票数据和财务数据最简单,虽然可能相比其他方法效率也不快,而且网易财经的股价都是除权的。

结合看的两本书,写了个源文件,从网易财经下载财务数据或股票成交数据到指定文件夹,再批量整合,或者读取指定股票,方法如下:

#脚本名称:RStock.R#从网易财经抓取公司财务数据(主要指标,其他部分可参考,简单修改url),20191208
#参考《量化投资基础、方法与策略:R语言实战指南》,付志刚,沈慧娟
getStockFin <- function(data,...){
for(i in 1:length(data)){
symbol <- data[i]
url <-paste0("http://quotes.money.163.com/service/zycwzb_",as.character(symbol),".html?type=year")
savefile <- paste0("E://Data_Analysis//StockFinancial//",as.character(symbol),".csv")
download.file(url,destfile=savefile,mode="wb",quiet=T)
}
}#从网易财经抓取股票交易数据,20191208
#参考《量化投资基础、方法与策略:R语言实战指南》,付志刚,沈慧娟
getStockData <- function(data,star_d,end_d,...){for(i in 1:length(data)){
symbol <- data[i]
if(substr(symbol,1,1)=="6") Fcode=0 else Fcode =1
url <-paste0("http://quotes.money.163.com/service/chddata.html?code=",Fcode,as.character(symbol),"&start=",star_d,"&end=",end_d,"&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP")
savefile <- paste0("E://Data_Analysis//getStock//",as.character(symbol),".csv")
download.file(url,destfile=savefile,mode="wb",quiet=T)
}
}#提取股票数据,并根据所在列合并,20191208
#参考网络
mergeStockData <- function(idx,...){files = list.files("E:/Data_Analysis/getStock")
dir <- paste0("E://Data_Analysis//getStock//",files,sep="")
merge.data <- read.csv(file=dir[1],header=T,sep=",",na.strings="None")
merge.data <- na.omit(merge.data)
names(merge.data)[idx]=substr(files[1],1,6)
merge.data <- merge.data[,c(1,idx)]for(i in 2:length(dir)){
new.data <- read.csv(file = dir[i],header=T,sep=",",na.strings="None")
new.data <- na.omit(new.data)
new.data <- new.data[,c(1,idx)]
names(new.data)[2]= substr(files[i],1,6)
merge.data <- merge(merge.data,new.data,all=TRUE)  #all=TRUE获取全部数据,缺省补充为“NA”
}dat <- merge.data
dat[,1] <-as.Date(dat[,1])
for(i in 1:length(dir)+1) names(dat)[i] <- paste0("A",names(dat)[i])
names(dat)[1] <- "Date"
return (dat)
}#提取单一公司股票数据,20191209
#参考《数字科学R语言实践:面向计算推理和问题求解的案例研究法》,Deborah Nolan ,Duncan Temple Lang
readStock <- function(Code,dateFormat = c("%Y-%m-%d","%Y/%m%d"),...){
fileName <- paste0("E://Data_Analysis//getStock//",Code,".csv")
data <- read.csv(fileName,header=TRUE,stringsAsFactors=FALSE,sep=",",na.strings="None")for(fmt in dateFormat){tmp =as.Date(data[,1],fmt)if(all(!is.na(tmp))){data[,1] =tmpbreak}
}data[order(data[,1]),]names(data) <- c("Date","Code","Name","Close","High","Low","Open","exClose","Change","Change_ret","Turnover","Volume","Money_Amount","totalMV","tradedMV")data<-data[,c(-2,-3)]data <-na.omit(data)
}
}

使用示例

1.从网易财经获取股票数据和财务数

codes <- read.table(“KCB List.txt”,header=T,sep=’\t’) #读取代码清单
head(codes)
Code 1 688218 2 688039 3 688357 4 688001 5 688118 6 688058
source(“RStock.R”) #导入脚本
list <-codes[,1]
getStockData(list,20190701,20191211) #读取财务数据
getStockFin(list) #获取财务指标数据,其他数据可修改源文件url

合并文件,获取全部股票收盘价数据

dat <- mergeStockData(4)
dim(dat)
[1] 97 71
dat[1:5,1:10]
Date A688001 A688002 A688003 A688005 A688006 A688007 A688008
1 2019-07-22 55.50 50.20 47.4 49.53 54.62 38.84 74.92
2 2019-07-23 48.73 43.89 40.5 41.70 47.11 34.55 74.13
3 2019-07-24 51.52 46.72 43.9 44.36 50.43 40.16 75.88
4 2019-07-25 54.71 49.07 50.5 48.92 54.10 42.23 78.00
5 2019-07-26 50.66 45.23 45.7 44.69 51.39 40.16 71.68
A688009 A688010
1 12.27 48.67
2 10.01 54.50
3 10.20 81.40
4 10.61 78.90
5 10.01 67.50

获取指定股票数据:

HXYC <- readStock(“688001”)
head(HXYC)
Date Close High Low Open exClose Change Change_ret Turnover
1 2019-12-11 49.70 54.70 47.60 49.00 47.30 2.40 5.0740 43.6106
2 2019-12-10 47.30 47.30 39.00 40.33 39.42 7.88 19.9899 30.7881
3 2019-12-09 39.42 39.42 36.06 37.00 32.85 6.57 20.0000 22.4033
4 2019-12-06 32.85 33.79 32.20 32.35 32.45 0.40 1.2327 5.7919
5 2019-12-05 32.45 32.48 31.52 31.78 31.82 0.63 1.9799 4.1147
6 2019-12-04 31.82 32.19 30.80 31.00 31.20 0.62 1.9872 3.3624
Volume Money_Amount totalMV tradedMV
1 15808656 799543552 19929700000 1801604126
2 11160540 482711021 18967300000 1714605134
3 8121107 310063112 15807420000 1428958444
4 2099527 69490610 13172850000 1190798703
5 1491578 47869950 13012450000 1176298871
6 1218862 38671711 12759820000 1153461636


Sping,20191211

使用R语言从网易财经批量获取股票数据并进行整合的方法相关推荐

  1. [Python]通过网易财经接口获取股票和指数的历史数据

    因为最近需要用到股市的各种指数数据,刚开始想的是从同花顺等交易软件直接导出,结果发现要用滚轮滚到最开始的日期,这过于繁琐了,我对于这种重复性的劳动一向不耐烦,而且这种方法在以后每日更新的时候也很不方便 ...

  2. R语言基础(3)——获取金融数据及处理分析

    文章目录 quantmod包 getSymbols()函数 getSymbols()函数参数的特例 获取股票数据 1. 股票日交易数据 2. 各种指数的日数据 3. 股息数据 4. 除权除息数据 5. ...

  3. R语言 | 利用tushare下载中小板所有股票数据并筛选出符合条件的股票

    作者的tushare ID:456548 作者在股市进行比较短线的投资,开发了一些高效的指标作为买卖的参考,于是需要k线.市值.换手率等数据进行研究,同花顺等软件上面大多数据不能导出,所以找到了tus ...

  4. R语言构建回归模型并获取对于新数据预测的预测区间实战:给出预测区间而不是一个具体的预测值、置信区间与预测区间的异同

    R语言构建回归模型并获取对于新数据预测的预测区间实战:95%或者99%预测区间而不是一个具体的预测值.置信区间与预测区间的异同 目录

  5. R语言使用rev函数对日期向量数据进行反序处理(逆序处理、reverse)

    R语言使用rev函数对日期向量数据进行反序处理(逆序处理.reverse) 目录 R语言使用rev函数对日期向量数据进行反序处理(逆序处理.reverse) R 语言特点 R语言使用rev函数对日期向 ...

  6. R语言ggplot2可视化:ggplot2可视化时间序列数据并在末尾数据点添加数值标签(number label)

    R语言ggplot2可视化:ggplot2可视化时间序列数据并在末尾数据点添加数值标签(number label) 目录

  7. R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据、在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series)

    R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据.在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series) ...

  8. R语言构建文本分类模型:文本数据预处理、构建词袋模型(bag of words)、构建xgboost文本分类模型、基于自定义函数构建xgboost文本分类模型

    R语言构建文本分类模型:文本数据预处理.构建词袋模型(bag of words).构建xgboost文本分类模型.基于自定义函数构建xgboost文本分类模型 目录

  9. R语言plyr包round_any函数将向量数据近似到任意精度实战

    R语言plyr包round_any函数向量将数据近似到任意精度实战 目录 R语言plyr包round_any函数向量将数据近似到任意精度实战 #导入plyr包 #仿真数据

最新文章

  1. 【网页前端设计Front end】JavaScript教程.下(看不懂你来打我)
  2. 实战派mysql高阶应用指南_MySQL高阶SQL语句(学会这些,让你对于数据库游刃有余)_Gengchenchen的博客-CSDN博客...
  3. 费氏搜寻法之算法分析与实现
  4. 全新的 flow.ci Dashboard 上线
  5. SpringBoot整合分布式消息平台Pulsar
  6. 快速上手 Serverless | 入门第一课
  7. Storm精华问答 | Storm如何连接MySQL?
  8. 使用Python-Flask框架开发Web网站系列课程(一)构建项目
  9. Cenos 7修改时区的方法
  10. 关于http协议的理解
  11. 【华为云技术分享】AI 开发路漫漫,什么才是真正的极客精神?
  12. Apache yarn入门介绍
  13. 无偿分享《新版标准日本语》电子版超级方便!!
  14. django数据库迁移
  15. 滴滴悬赏百万寻凶,机智网友支付宝钓鱼转账杀害空姐明珠疑凶
  16. 四大组件之Activity(下)
  17. 直播热潮之下的图片社交洼地
  18. 360扫描出来html木马,你的电脑真的做好防护了吗?使用360安全卫士木马查杀一键扫描就知道...
  19. excel数组公式中的意想不到的坑
  20. uilabel 左上对齐_UILabel一行居中对齐与多行左对齐

热门文章

  1. 每周分享第 13 期:周刊为什么只谈技术?
  2. (转)当AI变成宣传武器:继续深扒大数据公司Cambrige Analytica
  3. Dockerfile 构建python环境
  4. 全国高校计算机年会,第19届全国离散智能计算年会在我校举行
  5. 基于C++的Huffman赫夫曼编译码器开发 课程论文+项目源码及可执行exe文件
  6. 龟虽寿-曹操(东汉)
  7. python中3or5什么意思_解析python中and与or用法
  8. EnumSet源码分析
  9. python 框架 scrapy_python之框架篇(scrapy)
  10. 城市交通拥堵问题matlab,关于解决城市交通堵塞问题的数学模型的探究