Skip to content

Instantly share code, notes, and snippets.

@yanping
Created December 6, 2012 14:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save yanping/4224906 to your computer and use it in GitHub Desktop.
Save yanping/4224906 to your computer and use it in GitHub Desktop.
获取上海期货交易所数据
# 获取上海期货交易所数据
# 接口举例 http://www.shfe.com.cn/dailydata/kx/kx20121206.html
require(XML)
require(stringr)
shfeDatabase <- NULL
for (date in dates) {
str <- "http://www.shfe.com.cn/dailydata/kx/kx"
url <- paste(str, date, ".html", sep = "")
if(!url.exists(url)){
next
}else{
text <- htmlParse(url, encoding = "gb2312")
node <- getNodeSet(text, "//table[@id='tableInstrument']//td[@class='a1']")
data <- sapply(node, xmlValue)
data <- iconv(data, "UTF-8", "UTF-8")
data <- str_trim(data)
m <- matrix(data, nc = 13, byrow = T)
m <- data.frame(m)
if (nrow(m) == 1) {
next
} else{
m <- cbind(m, date)
colnames(m) <- c("品种", "交割月", "前结算", "今开盘", "最高价", "最低价", "收盘价", "结算价", "涨跌1", "涨跌2", "成交手", "持仓手", "变化", "date")
m <- m[(m[, 2] != "小计") & (m[, 1] != "总计"), ]
for (i in 2:nrow(m)) {
if (m[i, 1] == "")
m[i, 1] <- m[i - 1, 1]
}
m[m == ""] <- NA
fileName <- paste("shfe", date, ".csv", sep = "")
if(!file.exists(fileName)){
write.csv(m, fileName, row.names = FALSE)
}
shfeData <- read.csv(fileName)
if (is.null(shfeDatabase)) {
shfeDatabase <- shfeData
} else {
shfeDatabase <- rbind(shfeDatabase, shfeData)
}
}
}
}
@yanping
Copy link
Author

yanping commented Dec 7, 2012

但是网页的格式也一直在变,不能保证每天的数据都能扒下来

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment