Re: [R-br] Baixando dados do INMET com a biblioteca RCurl e bitops/Salvando arquivos em .txt

Jônatan, Dentro do que eu fiz vc aconselharia e pensaria em modificar o que para melhorar? Um grande abraço! Paulo Henrique de A. S. Pimenta Cel/WhatsApp/Telegram: +5511981318435 Sent from Mail for Windows 10 From: Jônatan<mailto:jdtatsch@gmail.com> Sent: Friday, July 8, 2016 5:27 PM To: Paulo Henrique Pimenta<mailto:paulopimenta6@hotmail.com>; a lista Brasileira oficial de discussão do programa R.<mailto:r-br@listas.c3sl.ufpr.br> Subject: Re: [R-br] Baixando dados do INMET com a biblioteca RCurl e bitops/Salvando arquivos em .txt Nesse link <https://github.com/jdtatsch/inmetr/blob/master/README.md> disponibilizo umas funções que fiz para importar os dados do site do inmet-bdmep para o R. O readme inclui exemplo de uso das funções. O script é baseado no post citado no e-mail Paulo e nas instruções dadas no vídeo <https://www.youtube.com/watch?v=o2fFUw8aSHE>do Meetup R São Paulo (*Web scraping usando o R* por Julio Trecenti). Testado no linux ubuntu somente. Em breve devo empacotar isso. Qualquer problema, me avisem por gentileza. Att. 2016-07-08 13:03 GMT-03:00 Paulo Henrique Pimenta via R-br < r-br@listas.c3sl.ufpr.br>:
Olá Listeiros!
Estou com um grande problema e acho que vcs podem me ajudar! Estou usando um script criado por mim a partir das dicas da própria lista: http://r-br.2285057.n4.nabble.com/R-br-r-baixando-dados-inmet-td4660459.html na qual usei o código como template para automatizar o download dos dados do inmet. Infelizmente estou com alguns problemas, um deles é que só consigo usar o código no Windows, ou seja, no R do Windows e não do Linux (possuo o Windows 10 e o Ubuntu 16.04 no meu notebook).
Os erros no meu Linux são referentes a biblioteca RCurl que mesmo reinstalado várias vezes e usado com a biblioteca bitops continuam a não funcionar. Outro problema que tenho é o não conhecimento sobre como salvar os arquivos baixados em um .txt ao invés de alocar em variáveis como estou fazendo. Caso algum de vcs se interesse em mexer e melhorar o código segue ele abaixo:
####################################################################################################################
### <begin>
library(bitops)
library(RCurl)
####################################################################
dados_1 <- read.table(
"E:/inmet/estacoes_2.txt",
header=F,
sep="\t")
dados_1 <- data.frame(dados_1)
#names(dados_1) <- c("cidades", "estacoes")
######################################################################
# Links para login e dados
myURL1 <- "http://www.inmet.gov.br/projetos/rede/pesquisa/inicio.php"
for (NUM in 1:length(dados_1[,2])){
myURL2[NUM] <- " http://www.inmet.gov.br/projetos/rede/pesquisa/gera_serie_txt.php?&mRelEstacao=dados_1[,2][NUM]&btnProcesso=serie&mRelDtInicio=01/01/2002&mRelDtFim=01/01/2013&mAtributos=1,,,,1,1,,1,1,,,1,,,,, "
# Dados para acesso
myParams=list(
mCod="SEU EMAIL",
mSenha="SUA SENHA",
btnProcesso = " Acessar ")
myCurl <- getCurlHandle()
curlSetOpt(cookiejar="cookies.txt", useragent="Mozilla/5.0", followlocation=TRUE, curl=myCurl)
login <- postForm(myURL1, .params=myParams, curl=myCurl)
dados[NUM] <- getURLContent(myURL2[NUM], curl=myCurl)
exemplo[NUM] <- head(strwrap(dados[NUM], 70), 10000)
}
### <end>
###################################################################################################################
O arquivo estacoes_2.txt esta aqui: http://s000.tinyupload.com/?file_id=66921456922777880817 <http://s000.tinyupload.com/index.php?file_id=66921456922777880817>
Se alguém tiver interesse em modificar para melhorar o código fique a vontade!
Um grande abraço a todos vcs!
Paulo.
Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ############################################################### ## Jônatan Dupont Tatsch ## Professor do Departamento de Física ## Centro de Ciências Exatas e Naturais (CCNE) ## Universidade Federal de Santa Maria - UFSM ## Faixa de Camobi, Prédio 13 - Campus UFSM - Santa Maria, RS, Brasil - 97105-900 ## Telefone: +55(55)33012083 ## www.ufsm.br/meteorologia ###############################################################

Senhores, bom dia! Embora a sugestão do colega Jônatan já deva solucionar o problema, deixo um código que utilizava para consulta. Testei no Ubuntu 16.04 e ainda funciona. Basicamente vai fazer o download dos dados em uma pasta 'Downloads' criada no diretório de trabalho. São criados 2 arquivos para cada estação: um arquivo "bruto" (iniciado por "raw_") e a table (iniciado por "dat_") resultante da importação.
sessionInfo() R version 3.2.3 (2015-12-10) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 16.04 LTS
locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=en_US.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] XML_3.98-1.4 RCurl_1.95-4.8 bitops_1.0-6 loaded via a namespace (and not attached): [1] tools_3.2.3 ### <code r> # ---------------------------------------------------------------------------- # # INMET/BDMEP - Download Dados DIÁRIOS # Eder Comunello - 2013.11.08 # ---------------------------------------------------------------------------- # library(RCurl); library(XML) setwd('~/LAB/DATCLIMA'); getwd() if (!file.exists('Download')) dir.create('Download'); dir(incl=T) # Login ---------------------------------------------------------------------- # myData <- scan(text=readLines('BDMEP1.dat')[1], what=character(), sep=';') myParams=list(mCod = myData[1], mSenha = myData[2], btnProcesso = " Acessar ") myCurl <- getCurlHandle() myURL1 <- "http://www.inmet.gov.br/projetos/rede/pesquisa/inicio.php" curlSetOpt(cookiejar="cookies.txt", useragent="Mozilla/5.0", followlocation=TRUE, curl=myCurl) myLogin <- postForm(myURL1, .params=myParams, curl=myCurl) # Downloads ------------------------------------------------------------------ # dError <- dSucess <- as.character(NULL) dINMET <- function(code=83264, dINI='01/01/1980', dFIM='31/12/1985') { myURL <- paste0("http://www.inmet.gov.br/projetos/rede/pesquisa/", "gera_serie_txt.php?&mRelEstacao=", code, "&btnProcesso=serie&mRelDtInicio=", dINI, "&mRelDtFim=",dFIM, "&mAtributos=,,1,1,,,,,,1,1,,1,1,1,1,") page <- getURLContent(myURL, curl=myCurl, .encoding="UTF-8") hParse <- htmlParse(page) ver1 <- as.character(substr(page,1,20)) ver2 <- substr(xpathSApply(hParse,'//*/pre', xmlValue, encoding='UTF-8'),1,17) if (ver1=="Registro Inexistente" | ver2=="Não existem dados") { print(paste0(code,': Dados não encontrados!')) dError <<- c(dError, code)} else { print(paste0(code, ': OK!')); dSucess <<- c(dSucess, code) hPart <- xpathSApply(hParse,'//*/pre', xmlValue) fileNam1 <- paste0('Download/raw_',code,'.txt') cat(hPart, file=fileNam1) dLines <- unlist(strsplit(hPart, "\n")) dHead <- dLines[grep("^Estacao;", dLines)] dText <- append(dHead, dLines[grep("^[0-9]{5,};", dLines)]) dFrame <- read.table(text=dText, dec=".", sep=";", head=T) fileNam2 <- paste0('Download/dat_',code,'.txt') write.table(dFrame, fileNam2, row.names=F)} } codEst <- c(83264, 83267, 83270, 83319, 83332, 83358) dError <- dSucess <- as.character(NULL) tryCatch({ sapply(codEst, function(x) dINMET(x, dINI='01/01/1980', dFIM='31/12/1985')) }, error=function(...)"ERROR!") # [1] "83264: OK!" # [1] "83267: Dados não encontrados!" # [1] "83270: Dados não encontrados!" # [1] "83319: Dados não encontrados!" # [1] "83332: OK!" # [1] "83358: OK!" paste(length(dSucess), 'estações baixadas com sucesso!') # [1] "3 estações baixadas com sucesso!" paste(length(dError), 'estações não baixadas!') # [1] "3 estações não baixadas!" dir(path="Download") # [1] "dat_83264.txt" "dat_83332.txt" "dat_83358.txt" "raw_83264.txt" "raw_83332.txt" "raw_83358.txt" ### </code> ================================================ Éder Comunello Researcher at Brazilian Agricultural Research Corporation (Embrapa) DSc in Agricultural Systems Engineering (USP/Esalq) MSc in Environ. Sciences (UEM), Agronomist (UEM) --- Embrapa Agropecuária Oeste, Dourados, MS, Brazil |<O>| ================================================ GEO, -22.2752, -54.8182, 408m UTC-04:00 / DST: UTC-03:00 Em 8 de julho de 2016 23:22, Paulo Henrique Pimenta via R-br < r-br@listas.c3sl.ufpr.br> escreveu:
Jônatan,
Dentro do que eu fiz vc aconselharia e pensaria em modificar o que para melhorar?
Um grande abraço!
Paulo Henrique de A. S. Pimenta Cel/WhatsApp/Telegram: +5511981318435
Sent from Mail for Windows 10
*From: *Jônatan <jdtatsch@gmail.com> *Sent: *Friday, July 8, 2016 5:27 PM *To: *Paulo Henrique Pimenta <paulopimenta6@hotmail.com>; a lista Brasileira oficial de discussão do programa R. <r-br@listas.c3sl.ufpr.br> *Subject: *Re: [R-br] Baixando dados do INMET com a biblioteca RCurl e bitops/Salvando arquivos em .txt
Nesse link <https://github.com/jdtatsch/inmetr/blob/master/README.md> disponibilizo umas funções que fiz para importar os dados do site do inmet-bdmep para o R. O readme inclui exemplo de uso das funções. O script é baseado no post citado no e-mail Paulo e nas instruções dadas no vídeo <https://www.youtube.com/watch?v=o2fFUw8aSHE>do Meetup R São Paulo (*Web scraping usando o R* por Julio Trecenti). Testado no linux ubuntu somente. Em breve devo empacotar isso. Qualquer problema, me avisem por gentileza. Att.
2016-07-08 13:03 GMT-03:00 Paulo Henrique Pimenta via R-br < r-br@listas.c3sl.ufpr.br>:
Olá Listeiros!
Estou com um grande problema e acho que vcs podem me ajudar! Estou usando um script criado por mim a partir das dicas da própria lista: http://r-br.2285057.n4.nabble.com/R-br-r-baixando-dados-inmet-td4660459.html na qual usei o código como template para automatizar o download dos dados do inmet. Infelizmente estou com alguns problemas, um deles é que só consigo usar o código no Windows, ou seja, no R do Windows e não do Linux (possuo o Windows 10 e o Ubuntu 16.04 no meu notebook).
Os erros no meu Linux são referentes a biblioteca RCurl que mesmo reinstalado várias vezes e usado com a biblioteca bitops continuam a não funcionar. Outro problema que tenho é o não conhecimento sobre como salvar os arquivos baixados em um .txt ao invés de alocar em variáveis como estou fazendo. Caso algum de vcs se interesse em mexer e melhorar o código segue ele abaixo:
####################################################################################################################
### <begin>
library(bitops)
library(RCurl)
####################################################################
dados_1 <- read.table(
"E:/inmet/estacoes_2.txt",
header=F,
sep="\t")
dados_1 <- data.frame(dados_1)
#names(dados_1) <- c("cidades", "estacoes")
######################################################################
# Links para login e dados
myURL1 <- "http://www.inmet.gov.br/projetos/rede/pesquisa/inicio.php"
for (NUM in 1:length(dados_1[,2])){
myURL2[NUM] <- " http://www.inmet.gov.br/projetos/rede/pesquisa/gera_serie_txt.php?&mRelEstacao=dados_1[,2][NUM]&btnProcesso=serie&mRelDtInicio=01/01/2002&mRelDtFim=01/01/2013&mAtributos=1,,,,1,1,,1,1,,,1,,,,, "
# Dados para acesso
myParams=list(
mCod="SEU EMAIL",
mSenha="SUA SENHA",
btnProcesso = " Acessar ")
myCurl <- getCurlHandle()
curlSetOpt(cookiejar="cookies.txt", useragent="Mozilla/5.0", followlocation=TRUE, curl=myCurl)
login <- postForm(myURL1, .params=myParams, curl=myCurl)
dados[NUM] <- getURLContent(myURL2[NUM], curl=myCurl)
exemplo[NUM] <- head(strwrap(dados[NUM], 70), 10000)
}
### <end>
###################################################################################################################
O arquivo estacoes_2.txt esta aqui: http://s000.tinyupload.com/?file_id=66921456922777880817 <http://s000.tinyupload.com/index.php?file_id=66921456922777880817>
Se alguém tiver interesse em modificar para melhorar o código fique a vontade!
Um grande abraço a todos vcs!
Paulo.
Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ############################################################### ## Jônatan Dupont Tatsch ## Professor do Departamento de Física ## Centro de Ciências Exatas e Naturais (CCNE) ## Universidade Federal de Santa Maria - UFSM ## Faixa de Camobi, Prédio 13 - Campus UFSM - Santa Maria, RS, Brasil - 97105-900 ## Telefone: +55(55)33012083 ## www.ufsm.br/meteorologia ###############################################################
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
participantes (2)
-
Paulo Henrique Pimenta
-
Éder Comunello