我正在尝试从表中删除一些数据,这些数据根据该表中的数据输入而有各种形状。由于某种原因,某些表(以及数据)被错误地报废。
require(data.table)
require(RCurl)
require(XML)
对于这种类型的ID,抓取不起作用:
ur.l <- data.frame(A=c(1),B=c(36232475,36232475))
对于其他类型ID,它可以工作:
ur.l <- data.frame(A=c(1),B=c(17053781,17054346))
scrape <- function(u) {
tryCatch({
tabs <- readHTMLTable(file.path("http://finstat.sk", u,
"suvaha"),encoding='utf-8')
tab <- tabs[[which.max(sapply(tabs, function(x) nrow(x)))]]
data.table(tab)
}, error=function(e) cat())
}
urls <- as.character(ur.l[1:2,2])
res <- sapply(urls, scrape)
filter.null <- res[lapply(res,length)>0]
translit <- function(x) iconv(x, "UTF-8", "ASCII//TRANSLIT", sub = "byte")
invisible(lapply(filter.null,function(x) x[,V1:=translit(V1)]))
可能是一个如此善良的人,并告诉我如何调整这个以便刮掉任何形状的桌子?对于某些ID,它不起作用......错误在于函数scrape()
。非常感激您的帮忙。
答案 0 :(得分:1)
使用sapply
时需要小心,因为它可能会产生意外输出。在这种情况下,你可以
res <- sapply(urls, scrape, simplify=FALSE)
或改为使用lapply
。