[R-br] Selecionar e copiar conteúdo de página usando apenas o terminal linux
Éder Comunello
comunello.eder em gmail.com
Terça Maio 6 12:41:51 BRT 2014
Senhores, bom dia!
Não sei se ainda há interesse na questão, mas retomei a ideia data mining
do whoscored.com e gostaria de compartilhar uma solução.
No código apliquei só para o Fluminense, mas já gerei os índices pra montar
o loop para outros times (objeto teams ou teamID).
### <code r>
# setwd(choose.dir())
setwd("C:/LAB/RBAS/dataMining")
sapply(c("RCurl", "XML", "RJSONIO"), require, character.only=T)
# browseURL("http://www.whoscored.com/Teams/1232")
myURL <- "http://www.whoscored.com/Teams/1232"
htmRaw <- getURL(myURL)
htmLin <- readLines(txtCon <- textConnection(htmRaw)); close(txtCon)
### Teams (IDs for future looping)
pageTree <- htmlTreeParse(htmLin, error=function(...){}, useInternalNodes
= TRUE)
teamsNames <- as.character(xpathApply(pageTree,
"//*/select[@id='teams']//option", xmlValue))
teamsID <- xpathApply(pageTree, "//*/select[@id='teams']//option")
teamsID <- sapply(teamsID, xmlGetAttr, 'value')
teamsID <- as.integer(gsub("^.*Teams\\/(.*)", "\\1", teamsID))
teams <- data.frame(teamsID, teamsNames, stringsAsFactors=F); teams
### Info about a specific team (Fluminense)
sLin <- grep("DataStore.prime\\(\\'stage-player-stat\\'", htmLin)
sDat <- htmLin[sLin]
dJSON <- gsub("^.*DataStore.*\\[(.*)\\]);", "\\[\\1\\]", sDat)
convertJSONDate = function(x) {
if(grepl("/?(new )?Date\\(", x)) {
val = gsub(".*Date\\(([0-9]+)\\).*", "\\1", x)
as.Date(structure((as.numeric(val)/1000), class = c("POSIXct",
"POSIXt")))
} else x }
myList <- fromJSON(dJSON, nullValue=NA, stringFun=convertJSONDate)
length(myList)
myListVars <- as.vector(sapply(myList[1], names)); myListVars
fullDF <- data.frame(t(sapply(myList, as.vector)),
stringsAsFactors=FALSE)
shortListVars <-
c("TeamRegionCode","Name","PositionShort","Age","Height","Weight","GameStarted","Goals","Assists","Yellow","Red","TotalShots","TotalPasses",
"AccuratePasses","AerialWon","ManOfTheMatch","Rating")
head(fullDF[shortListVars])
### <code>
Éder Comunello <c <comunello.eder em gmail.com>omunello.eder em gmail.com>
Dourados, MS - [22 16.5'S, 54 49'W]
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20140506/c7af8fd1/attachment.html>
Mais detalhes sobre a lista de discussão R-br