Pessoal, tudo bem?
Como eu posso criar uma rotina de importar determinado arquivo que esta alocado em um export button na web?
Veja o link:
https://servicos2.sjc.sp.gov.br/servicos/portal_da_transparencia/despesa_fornecedor.aspx
O botao de exportar o arquivo esta nesse link abaixo:
javascript:__doPostBack(‘ctl00$ctl00$ctl00$ctl00$ContentPlaceHolderDefault$modelo_master_meio$modelo_uma_coluna_meio$ctl02$Transp_DespesasFornecedores_v2_6$lnkExportarFornecedores’,’’)
Quero tornar esse processo automatizado de tal forma que todo dia 01, seja feita essa rotina e o resultado seja salvo em um dataframe.
Partial solution:
url <- "https://servicos2.sjc.sp.gov.br/servicos/portal_da_transparencia/despesa_fornecedor.aspx"
source <- readLines(url, encoding = "UTF-8")
parsed_doc <- htmlParse(source, encoding = "UTF-8")
export_buttom <- xpathSApply(parsed_doc, path = '//*[@id="ctl00_ctl00_ctl00_ctl00_ContentPlaceHolderDefault_modelo_master_meio_modelo_uma_coluna_meio_ctl02_Transp_DespesasFornecedores_v2_6_lnkExportarFornecedores"]', xmlValue)
Agradeco as dicas!
Abs,
Salerno
Oi, @andresalerno. Segue uma solução que encontrei na internet adaptada de uma resposta de outra dúvida que o @jtrecenti me ajudou aqui no fórum. Ela baixa o arquivo csv no seu diretório de trabalho.
Uma dúvida que fiquei, talvez o @jtrecenti ou @clente possam ajudar, é pq não consigo pegar o __EVENTTARGET
automaticamente? Será que existe outro jeito de fazer que pegue esse parâmetro automaticamente?
# pacotes
library(rvest)
library(httr)
library(xml2)
# acessa pagina inicial
r0 <- httr::GET("https://servicos2.sjc.sp.gov.br/servicos/portal_da_transparencia/despesa_fornecedor.aspx")
# pega parâmetros que dependem da sessão
vs <- r0 %>%
xml2::read_html() %>%
xml2::xml_find_first("//*[@id='__VIEWSTATE']") %>%
xml2::xml_attr("value")
vs_gen <- r0 %>%
xml2::read_html() %>%
xml2::xml_find_first("//*[@id='__VIEWSTATEGENERATOR']") %>%
xml2::xml_attr("value")
## Não funciona!!!! Pq será?
ev_targ <- r0 %>%
xml2::read_html() %>%
xml2::xml_find_first("//*[@id='__EVENTTARGET']") %>%
xml2::xml_attr("value")
# escreve os parâmetros (obtido automaticamente menos EVENTTARGET)
pg <- content(r0, as = "parsed")
for_post <- html_nodes(pg, "input[type='hidden']")
parametros <- as.list(
c(
setNames(
html_attr(for_post, "value"),
html_attr(for_post, "id")
),
`__EVENTTARGET` = "ctl00$ctl00$ctl00$ctl00$ContentPlaceHolderDefault$modelo_master_meio$modelo_uma_coluna_meio$ctl02$Transp_DespesasFornecedores_v2_6$lnkExportarFornecedores"
)
)
# escreve os parâmetros (obtive da aba "Network")
parametros_teste <- list(
"__VIEWSTATE" = vs,
"__VIEWSTATEGENERATOR" = vs_gen,
"__VIEWSTATEENCRYPTED" = "",
"__EVENTTARGET" = "ctl00$ctl00$ctl00$ctl00$ContentPlaceHolderDefault$modelo_master_meio$modelo_uma_coluna_meio$ctl02$Transp_DespesasFornecedores_v2_6$lnkExportarFornecedores"
)
# Salva csv.
res <- httr::POST("https://servicos2.sjc.sp.gov.br/servicos/portal_da_transparencia/despesa_fornecedor.aspx",
body = parametros_teste,
write_disk("fornecedores.csv", overwrite = TRUE),
progress()
)
teste <- vroom::vroom(file = 'fornecedores.csv', locale = vroom::locale(encoding = "CP1252"))
1 curtida