各种形状的刮痧表

时间:2014-05-07 09:49:57

标签: r web-scraping

我正在尝试从表中删除一些数据,这些数据根据该表中的数据输入而有各种形状。由于某种原因,某些表(以及数据)被错误地报废。

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()。非常感激您的帮忙。

1 个答案:

答案 0 :(得分:1)

使用sapply时需要小心,因为它可能会产生意外输出。在这种情况下,你可以

res <- sapply(urls, scrape, simplify=FALSE)

或改为使用lapply