全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
11940 41
2015-01-07
悬赏 100 个论坛币 已解决
最近想研究一下股票融资融券的数据,但无奈这些数据都是存储在各家网站的网页上的。

设想:用require(XML)和require(RCurl)两个包抓取下面两个网页的数据,一个是个股的每日成交数据(每日成交金额),一个是融资融券的数据(主要是融资买入额,融资余额,融资偿还额)。


网站1:http://data.eastmoney.com/rzrq/detail/600030.html

360桌面截图20150106171922.jpg
[size=13.63636302948px]网站2:http://app.finance.ifeng.com/hq/stock_daily.php?code=sh600030

这里只需截取成交额即可。

网站3:http://stockdata.stock.hexun.com/600030.shtml 360桌面截图20150107183150.jpg
这里只需要流通股本这一个数据。
流通A股(亿)

98.15



我想的是把这两个网站的以上数据汇总到R中的一个data frame中去,然后仅需修改网址的后缀即可实现任意个股的数据查询。但首先应该就是网页数据的抓取。请大神们支招。谢谢!!!



360桌面截图20150106171933.jpg

原图尺寸 346.98 KB

360桌面截图20150106171933.jpg

最佳答案

dataorz 查看完整内容

网页1前5页 require(RCurl) require(rjson) cURL
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-1-7 06:20:11
网页1前5页

require(RCurl)
require(rjson)
cURL <- paste("http://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=FD&sty=MTE&mkt=1&code=600030&p=",1:5,sep="")
fdjson <- getURL(cURL)
fdjson1 <- substr(fdjson,2,nchar(fdjson)-1)
fdlist <- sapply(fdjson1,fromJSON)
fdlist <- strsplit(fdlist,",")
fdm <- matrix(unlist(fdlist),ncol=13,byrow=T)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-1-7 16:29:52
require(RCurl)
require(rjson)
fdjson <- getURL("http://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=FD&sty=MTE&mkt=1&code=600030")
fdjson1 <- substr(fdjson,2,nchar(fdjson)-1)
fdlist <- fromJSON(fdjson1)
fdlist <- strsplit(fdlist,",")
fdm <- matrix(unlist(fdlist),nrow=length(fdlist),ncol=13,byrow=T)

网站1数据的抓取,请参考
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-1-7 16:34:01
看网页源码可知
1,数据来源
dataurl: "http://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=FD&sty=MTE&mkt=1&code=600030&st={sortType}&sr={sortRule}&p={page}&ps={pageSize}&js=var {jsname}={pages:(pc),data:[(x)]}{param}",
2,网页显示只部分数据和指定表示顺序
row.cells[0].innerHTML = c;
                row.cells[1].innerHTML = data[4].replace(/\//g, "-"); //
                row.cells[2].innerHTML = data[12].format(1,0,true,"-"); //
                row.cells[3].innerHTML = data[10].format(1,0,true,"-"); //
                row.cells[4].innerHTML = data[9].format(1,0,true,"-"); //
                row.cells[5].innerHTML =data[7].format(1,0,true,"-"); //
                row.cells[6].innerHTML =data[6].format(1,0,true,"-"); //
                row.cells[7].innerHTML =data[5].format(1,0,true,"-"); //

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-1-7 17:31:37
第一个是JSON格式的数据,搞不明白如何趴;第二个比较简单,是HTML格式数据。
library(rvest)
url = 'http://app.finance.ifeng.com/hq/stock_daily.php?code=sh600030'
dat = url %>% html() %>% html_nodes('table') %>% html_table() %>% .[[1]]
names(dat) = c('日期','开盘价','最高价','最低价','收盘价','成交量','成交额','涨跌额','涨跌幅')

如果有乱码用下面代码去掉没有用的乱码:

dat$日期 = sapply(1:nrow(dat),function(i)                              str_extract(dat[i,1],"\\d{4}-\\d{2}-\\d{2}"))

dat$成交量 = sapply(1:nrow(dat),function(i)
                             str_extract(dat[i,6],"\\d+"))

dat$成交额 = sapply(1:nrow(dat),function(i)
                             str_extract(dat[i,7],"\\d+"))






二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-1-7 23:31:38
内容mark
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群