R:批量抓取沪市上市公司第三季度财务报表
2016-11-30 00:00
176 查看
一、网页结构解析
数据来源网站:凤凰财经(http://finance.ifeng.com/app/hq/stock/sz000002/)
通过“审查元素”选项查看每一个变量的html结构:
二、导入股票代码和构造变量值向量容器
> library(openxlsx) > stockcode<-read.xlsx("C:/Users/steph/Desktop/stock/stockcode.xlsx",1,colNames=F) #文件包含股票代码信息 > codes<-as.vector(stockcode[[1]]) #数据类型转换 > EPS<-vector(length=length(codes)) #每股收益 > NAV<-vector(length=length(codes)) #每股净资产 > ROE<-vector(length=length(codes)) #净资产收益率 > ND<-vector(length=length(codes)) #每股未分配利润 > CR<-vector(length=length(codes)) #每股资本公积 > OCFPS<-vector(length=length(codes)) #每股经营现金流 > NP<-vector(length=length(codes)) #净利润(万元) > OI<-vector(length=length(codes)) #营业收入(万元) > ROI<-vector(length=length(codes)) #投资收益(万元) > FE<-vector(length=length(codes)) #财务费用(万元)
三、构造循环语句抓详细财务信息
> library(rvest) > for(n in 1:length(codes)){ + i<-codes + url<-paste("http://finance.ifeng.com/app/hq/stock/",i,"/",sep="") + res1<-tryCatch({read_html(url)%>%html_nodes(".tabInfor06")%>%html_nodes("li")%>%.[1]%>%html_nodes("td")%>%.[2]%>%html_text%>%as.numeric()},error=function(e){"NA"}) + EPS <-res1 + res2<-tryCatch({read_html(url)%>%html_nodes(".tabInfor06")%>%html_nodes("li")%>%.[2]%>%html_nodes("td")%>%.[2]%>%html_text%>%as.numeric()},error=function(e){"NA"}) + NAV <-res2 + res3<-tryCatch({read_html(url)%>%html_nodes(".tabInfor06")%>%html_nodes("li")%>%.[3]%>%html_nodes("td")%>%.[2]%>%html_text%>%as.numeric()},error=function(e){"NA"}) + ROE <-res3 + res4<-tryCatch({read_html(url)%>%html_nodes(".tabInfor06")%>%html_nodes("li")%>%.[4]%>%html_nodes("td")%>%.[2]%>%html_text%>%as.numeric()},error=function(e){"NA"}) + ND <-res4 + res5<-tryCatch({read_html(url)%>%html_nodes(".tabInfor06")%>%html_nodes("li")%>%.[5]%>%html_nodes("td")%>%.[2]%>%html_text%>%as.numeric()},error=function(e){"NA"}) + CR <-res5 + res6<-tryCatch({read_html(url)%>%html_nodes(".tabInfor06")%>%html_nodes("li")%>%.[6]%>%html_nodes("td")%>%.[2]%>%html_text%>%as.numeric()},error=function(e){"NA"}) + OCFPS <-res6 + res7<-tryCatch({read_html(url)%>%html_nodes(".tabInfor06")%>%html_nodes("li")%>%.[7]%>%html_nodes("td")%>%.[2]%>%html_text%>%as.numeric()},error=function(e){"NA"}) + NP <-res7 + res8<-tryCatch({read_html(url)%>%html_nodes(".tabInfor06")%>%html_nodes("li")%>%.[8]%>%html_nodes("td")%>%.[2]%>%html_text%>%as.numeric()},error=function(e){"NA"}) + OI <-res8 + res9<-tryCatch({read_html(url)%>%html_nodes(".tabInfor06")%>%html_nodes("li")%>%.[9]%>%html_nodes("td")%>%.[2]%>%html_text%>%as.numeric()},error=function(e){"NA"}) + ROI <-res9 + res10<-tryCatch({read_html(url)%>%html_nodes(".tabInfor06")%>%html_nodes("li")%>%.[10]%>%html_nodes("td")%>%.[2]%>%html_text%>%as.numeric()},error=function(e){"NA"}) + FE <-res10 + next + }
四、构造数据框查看股票财务列表信息
> FS<-data.frame(EPS,NAV,ROE,ND,CR,OCFPS,NP,OI,ROI,FE) #将抓取的数据构造数据框 > companydetail<-read.xlsx("C:/Users/steph/Desktop/stock/companydetail.xlsx",1,colNames=F) #导入股票其它信息 > companyfinacedetail<-cbind(companydetail,FS) #合并数据框 > names(companyfinacedetail)<-c("股票代码","公司名称","所属行业","总市值(万元)","流通市值(万元)","每股收益","每股净资产","净资产收益率%","每股未分配利润","每股资本公积","每股经营现金流","净利润(万元)","营业收入(万元)","投资收益(万元)","财务费用(万元)") #修改变量名称 > head(companyfinacedetail,n=10) #提取前10间公司财务信息
结果如下:
(End)
相关文章推荐
- 分享Asp.net做的几个实用示例,数据报表、二维码、数据抓取、批量上传图片
- 分享用Asp.net做的几个实例,数据报表、二维码、数据抓取、批量上传图片
- 对上市公司虚假财务报表的分析
- 分享用Asp.net做的几个实例,数据报表、二维码、数据抓取、批量上传图片
- 润乾V4报表批量打印
- 笨笨图片批量抓取下载 V0.2 beta
- Python抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup)
- 关于产品财务报表导入版本问题的解决方案低版本高版本通用 (POI导入导出excel报org.apache.xmlbeans.XmlOptions.setLoadEntityBytesLimit错误)
- 三大财务报表
- Oracle财务系统常用标准报表
- 网站内容批量抓取和《著作权法》
- Hibernate学习---第十二节:Hibernate之数据抓取策略&批量抓取
- 抓取报表ALV GRID上的数据
- 五种主流web报表工具的功能对比——批量打印
- python小技巧之批量抓取美女图片
- 如何辨别上市公司财务造假
- 财务报表列定义中几个列类型的说明
- 第2章基本财务报表
- 具有代表性的财务报表--应收帐