[R-br] Encoding e função postForm

Éder Comunello comunello.eder em gmail.com
Segunda Junho 9 15:11:35 BRT 2014


Paulo, boa tarde!

No código que você postou .encoding não está como um argumento de postForm,
mas sim de .params. De qualquer modo, não é útil para o que você deseja,
porque é atributo do que se está postando, no caso o código do objeto (
"JG310431462BR").

O encoding que você deseja é do que você está retornando do postForm, sendo
assim deve indicar o encoding em htmlParse() ou htmlTreeParse().

Apesar da indicação da página estar em "ISO-8859-1", pelo menos o trecho
que retorna o rastreamento está em "UTF-8".

Separei o conteúdo da div "ctrlcontent" e li a tabela que havia dentro
dela. Preciso estudar melhor o readHTMLTable, mas por ora usei o artifício
do gsub() pra melhorar a saída.


### <code r>
sapply(c("RCurl", "httr", "XML"), require, character=T)
add    <- "http://www2.correios.com.br/sistemas/rastreamento/resultado.cfm"
params <- c(objetos="JG310431462BR", btnPesq="Buscar")
src    <- postForm(add, .params=params)
tree   <- htmlParse(src, encoding = "UTF8")

div    <- xpathSApply(tree, '//div[@class="ctrlcontent"]')
info   <- readHTMLTable(div[[1]], stringsAsFactors = FALSE); info

sapply(info, function(x) gsub(' \\r',  '- ', x))

#      V1                                      V2

# [1,] "09/06/2014 - 11:39 SAO PAULO / SP"     "Objeto saiu para entrega ao
destinatário"
# [2,] "04/06/2014 - 17:06 FOZ DO IGUACU / PR" "Objeto postado"

### </code>

Espero que ajude...

Éder Comunello <c <comunello.eder em gmail.com>omunello.eder em gmail.com>
Dourados, MS - [22 16.5'S, 54 49'W]


Em 7 de junho de 2014 13:01, Paulo Nogueira Starzynski <paulons em gmail.com>
escreveu:

> Senhores, acho que a questão é simples mas eu me confundo com encodings no
> R. No exemplo abaixo estou utilizando a função postForm para informar um
> número de rastreador no site dos correios. Em seguida, utilizo o pacote XML
> para limpar o código fonte e ficar com o que me interessa, que são os dados
> da carta em trânsito, desde Foz do Iguacu até minha casa.
>
> Está funcionando, mas eu gostaria que os acentos estivessem corretos.
> O resultado que obtenho no R é esse:
>
> [1] "\r04/06/2014  \r17:06 FOZ DO IGUACUÂ /Â PR\r\r\r\r\rObjeto postado \r \r"
>
>
> Marquei o enconding como "ISO-8859-1" porque é o que aparece no começo do
> código fonte da página:
> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
>
> Como posso melhorar?
> Segue o código:
>
> require(RCurl)
> require(XML)
>
> add<-"http://www2.correios.com.br/sistemas/rastreamento/resultado.cfm"
> src<-postForm(add, .params = c(objetos="JG310431462BR",
>                                btnPesq="Buscar",
>               .enconding="ISO-8859-1"))
>
> tree<-htmlTreeParse(src, useInternalNodes=T)
> xpathSApply(tree, '//table', xmlValue)
>
>
>
> Grato,
> Paulo Nogueira Starzynski
>
>
> _______________________________________________
> R-br mailing list
> R-br em 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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20140609/1e044ebe/attachment.html>


Mais detalhes sobre a lista de discussão R-br