if(!require(datamart)) install.packages("datamart") allensbach <- function(resource="sonntagsfrage") urldata3( resource=resource, template="http://www.ifd-allensbach.de/studien-und-berichte/sonntagsfrage/gesamt.html", extract.fct=htmlParse, transform.fct=function(x) { nodes <- try(getNodeSet(x, '//tr[@class="odd" or @class="even"]'), silent=TRUE) if(inherits(nodes, "try-error")) return(data.frame()) if(length(nodes)==0) return(data.frame()) dat <- as.data.frame(t(sapply(nodes, function(n) c( timestamp=xmlValue(n[[1]]), afd=xmlValue(n[[3]]), cducsu=xmlValue(n[[4]]), spd=xmlValue(n[[5]]), fdp=xmlValue(n[[6]]), gruene=xmlValue(n[[7]]), linke=xmlValue(n[[8]]), piraten=xmlValue(n[[9]]), sonstige=xmlValue(n[[10]]) ))), stringsAsFactors=FALSE) parse_number <- function(x) { idx <- x=="--" x[!idx] <- gsub(",", ".", x[!idx], fixed=TRUE) x[idx] <- NA return(as.numeric(x)) } dat <- transform(dat, timestamp=strptime(strtail(timestamp, 10), "%d.%m.%Y"), afd=parse_number(afd), cducsu=parse_number(cducsu), spd=parse_number(spd), fdp=parse_number(fdp), gruene=parse_number(gruene), linke=parse_number(linke), piraten=parse_number(piraten), sonstige=parse_number(sonstige) ) return(dat) } ) query(allensbach(), resource="sonntagsfrage")