[R-br] Ajuda com download de csv pela internet

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[R-br] Ajuda com download de csv pela internet

R-br mailing list
Pessoal, bom dia.

Estou com o seguinte problema. Preciso fazer automaticamente um download pela internet de um arquivo em CSV no site do TSE: http://www.tse.jus.br/eleitor/biometria/biometria-atual-do-dia, mas o link é gerado a partir de um comando em javascrit, algo parecido com javascript:window.location.href=apex.server.url({p_request: 'FLOW_EXCEL_OUTPUT_R69876138832319545_pt-br'},2); null;

Alguém já teve esse problema? Anteriormente o site não limitava o número de registros e conseguia fazer o web scraping via html , mas a partir desta semana o site foi atualizado e está limitando a 30 por página.

Alguma dica? 

Muito Obrigado

Olympio Neto


_______________________________________________
R-br mailing list
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Ajuda com download de csv pela internet

R-br mailing list
Olympio,

Um primeiro passo na direção de uma solução definitiva.

#-----------------------------------------------------------------------

# Abrir página.
browseURL("http://www.tse.jus.br/eleitor/biometria/biometria-atual-do-dia")

# 1. Use F12 para abrir as ferramentas de desenvolvimento do navegador.
# 2. Visite aba "Network".
# 3. Limpe todos os eventos (clique na lixeira).
# 4. Na página, clique no botão de Download do arquivo.
# 5. Inspecione na aba "Network" a requisição.
# 6. No "Headers" da requisição, copie o "Request URL".
# 7. Use o "Request URL" para baixar o arquivo e escrever em disco.
# 8. Note que o existem partes comuns no "href" dentro da página e no
#    endereço da "Request URL". Com isso você pode tentar prever a
#    "Request URL" pelo código fonte da página HTML.

# href do HTML: "javascript:window.location.href=apex.server.url({p_request: 'FLOW_EXCEL_OUTPUT_R69876138832319545_pt-br'},2); null;"
# Request URL: "http://inter04.tse.jus.br/ords/dwtse/wwv_flow.show?p_flow_id=164&p_flow_step_id=2&p_instance=10013814358375&p_debug=&p_request=FLOW_EXCEL_OUTPUT_R69876138832319545_pt-br"

library(httr)

url <- "http://inter04.tse.jus.br/ords/dwtse/wwv_flow.show?p_flow_id=164&p_flow_step_id=2&p_instance=10013814358375&p_debug=&p_request=FLOW_EXCEL_OUTPUT_R69876138832319545_pt-br"

u <- GET(url)                          # Faz requisição.
content(u)                             # Conteúdo binário.
writeBin(content(u), con = "file.xls") # Escreve em disco.

# Escrevendo em disco direto.
GET(url, write_disk("file2.xls"))

#-----------------------------------------------------------------------


À disposição.
Walmes.

_______________________________________________
R-br mailing list
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Ajuda com download de csv pela internet

R-br mailing list
Walmes, muito obrigado.
Já consegui acessar o arquivo com sua dica, mas estranho que ao mudar p estado, não muda o link e continua fazendo o download dos dados do Acre, que acredito ser o padrão da página.

O link gerado é exatamente igual. Será que o Apex não altera esse link conforme a requisição?

Mais uma vez, muito obrigado!

Olympio

Em seg, 2 de dez de 2019 10:52, Walmes Zeviani <[hidden email]> escreveu:
Olympio,

Um primeiro passo na direção de uma solução definitiva.

#-----------------------------------------------------------------------

# Abrir página.
browseURL("http://www.tse.jus.br/eleitor/biometria/biometria-atual-do-dia")

# 1. Use F12 para abrir as ferramentas de desenvolvimento do navegador.
# 2. Visite aba "Network".
# 3. Limpe todos os eventos (clique na lixeira).
# 4. Na página, clique no botão de Download do arquivo.
# 5. Inspecione na aba "Network" a requisição.
# 6. No "Headers" da requisição, copie o "Request URL".
# 7. Use o "Request URL" para baixar o arquivo e escrever em disco.
# 8. Note que o existem partes comuns no "href" dentro da página e no
#    endereço da "Request URL". Com isso você pode tentar prever a
#    "Request URL" pelo código fonte da página HTML.

# href do HTML: "javascript:window.location.href=apex.server.url({p_request: 'FLOW_EXCEL_OUTPUT_R69876138832319545_pt-br'},2); null;"
# Request URL: "http://inter04.tse.jus.br/ords/dwtse/wwv_flow.show?p_flow_id=164&p_flow_step_id=2&p_instance=10013814358375&p_debug=&p_request=FLOW_EXCEL_OUTPUT_R69876138832319545_pt-br"

library(httr)

url <- "http://inter04.tse.jus.br/ords/dwtse/wwv_flow.show?p_flow_id=164&p_flow_step_id=2&p_instance=10013814358375&p_debug=&p_request=FLOW_EXCEL_OUTPUT_R69876138832319545_pt-br"

u <- GET(url)                          # Faz requisição.
content(u)                             # Conteúdo binário.
writeBin(content(u), con = "file.xls") # Escreve em disco.

# Escrevendo em disco direto.
GET(url, write_disk("file2.xls"))

#-----------------------------------------------------------------------


À disposição.
Walmes.

_______________________________________________
R-br mailing list
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Ajuda com download de csv pela internet

R-br mailing list
Respostas na mensagem.

À disposição.
Walmes.


On Mon, Dec 2, 2019 at 2:51 PM Olympio Neto por (R-br) <[hidden email]> wrote:
Walmes, muito obrigado.
Já consegui acessar o arquivo com sua dica, mas estranho que ao mudar p estado, não muda o link e continua fazendo o download dos dados do Acre, que acredito ser o padrão da página.

O link gerado é exatamente igual. Será que o Apex não altera esse link conforme a requisição?
 
É bem provável que sim.
Talvez usar o RSelenium seja uma solução viável.


Mais uma vez, muito obrigado!

Olympio


_______________________________________________
R-br mailing list
[hidden email]
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.