R网络爬虫

      网上关于R的网络爬虫少之又少,即使找到代码,由于各方面原因总是不能成功运行。对于搞数据分析的筒子们来说,从互联网上获取数据是非常重要的,于是决定自己写一个简单的基于R的网络爬虫,然后共享出来供大家参考。

     所扒的数据为新浪财经—股票---中国银行---历史信息中的第一页表格数据,连接:http://vip.stock.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/601988.phtml?year=2015&jidu=2。

    

library(RCurl)
temp=getURL("http://vip.stock.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/601988.phtml?year=2015&jidu=2")  
#将此网页的元素装进temp
k=strsplit(temp,"\r\n")[[1]]   
#将取出的网页按行划分,此时k有一个元素(属性),此属性有很多行,[[1]]为取出第一个元素
#k[4]  #测试:取出第四行元素

#########################时间###########################
timeadr=k[grep("a target='_blank'",k)+1] 
#根据正则表达式“a target='_blank'”定位要抓取的字符串,由于定位行的下一行时间比较好取,所以+1
time=substring(timeadr,4,13)
#获得时间
#########################开盘价###########################
fpriceadr=k[grep("a target='_blank'",k)+3]
#获得”开盘价“定位行
fprice=gregexpr(">\\d+",fpriceadr)
#获得"开盘价"在行中的准确位置。用正则表达式确定数字的位置(大于号后边紧跟一个或多个数字)
fprices=fpriceadr
#构造一个相同大小的向量
for(i in 1:length(fpriceadr))
{
  tempp=fprice[[i]]
  fprices[i]=substring(fpriceadr[i],tempp+1,tempp+attr(tempp,'match.length')+3)
}
 
fprices
fprices=as.numeric(fprices)
#########################最高价###########################
topadr=k[grep("a target='_blank'",k)+4]
ftop=gregexpr(">\\d+",topadr)
ftops=topadr
for(i in 1:length(topadr))
{  
  tempp=ftop[[i]]
  ftops[i]=substring(topadr[i],tempp+1,tempp+attr(tempp,'match.length')+3)
}
ftops
ftops=as.numeric(ftops)
#########################收盘价###########################
cpriceadr=k[grep("a target='_blank'",k)+5]
cprice=gregexpr(">\\d+",cpriceadr)
cprices=cpriceadr
for(i in 1:length(cpriceadr))
{  
  tempp=cprice[[i]]
  cprices[i]=substring(cpriceadr[i],tempp+1,tempp+attr(tempp,'match.length')+3)
}
cprices
cprices=as.numeric(cprices)
#########################最低价###########################
lowadr=k[grep("a target='_blank'",k)+6]
flow=gregexpr(">\\d+",lowadr)
flows=lowadr
for(i in 1:length(lowadr))
{  
  tempp=flow[[i]]
  flows[i]=substring(lowadr[i],tempp+1,tempp+attr(tempp,'match.length')+3)
}
flows
flows=as.numeric(flows)
#########################交易量###########################
sumadr=k[grep("a target='_blank'",k)+7]
fsum=gregexpr(">\\d+",sumadr)
fsum_2=gregexpr("\\d<",sumadr)
#数字长度不同,用fsum和fsum_2截断
fsums=sumadr
for(i in 1:length(sumadr))
{  
  tempp=fsum[[i]]
  tempp_2=fsum_2[[i]]
  fsums[i]=substring(sumadr[i],tempp+1,tempp_2)
}
fsums
fsums=as.numeric(fsums)
#########################交易额###########################
moneyadr=k[grep("a target='_blank'",k)+8]
fmoney=gregexpr(">\\d+",moneyadr)
fmoneys=moneyadr
for(i in 1:length(moneyadr))
{  
  tempp=fmoney[[i]]
  fmoneys[i]=substring(moneyadr[i],tempp+1,tempp++10)
}
fmoneys
fmoneys=as.numeric(fmoneys)

##########################################################
bank=cbind(time,fprices,ftops,cprices,flows,fsums,fmoneys)
bank





  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值