Last active
April 17, 2020 23:09
-
-
Save lgelape/f8e7acd0e418ab478ac2d859b6a5ab9a to your computer and use it in GitHub Desktop.
Código para coletar informações de órgãos partidários brasileiros
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
################################################################################################### | |
### CODIGO PARA COLETAR INFORMACOES DE ORGAOS PARTIDARIOS BRASILEIROS - SGIP/TSE | |
## Nivel: municipal | |
# Mes de coleta: Abril/2020 | |
# Lucas Gelape | |
# Disclaimer: o codigo demora algumas horas para coletar todas as informacoes | |
################################################################################################### | |
# Limpar o ambiente de trabalho | |
#rm(list = ls()) | |
# Pacotes | |
library(rvest) | |
library(httr) | |
library(tidyjson) | |
library(stringi) | |
library(dplyr) | |
################################################################################################### | |
# Carregar um banco de dados com codigos do IBGE e do TSE (so os do TSE sao necessarios, | |
# entao, basta baixar qualquer outro banco do TSE que tenha tais codigos e usa-los). | |
load("ibge_tse.Rda") | |
# Criar um vetor com a sigla das UF | |
estados <- c("AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA", | |
"MG", "MS", "MT", "PA", "PB", "PE", "PI", "PR", "RJ", "RN", | |
"RO", "RR", "RS", "SC", "SE", "SP", "TO") | |
# Criar um vetor com o numero dos partidos | |
numeros_partidos <- c("70", "27", "25", "15", "30", "51", "21", "65", "29", "12", | |
"31", "35", "33", "19", "11", "54", "23", "22", "10", "90", | |
"44", "28", "40", "20", "55", "45", "17", "50", "16", "13", | |
"14", "36", "43", "18", "77") | |
numeros_partidos <- sort(numeros_partidos) | |
# Renomear os bancos para uso no loop | |
cod_tse <- ibge_tse %>% | |
select(uf, cod_tse_5) %>% | |
rename(UF = uf, CD_TSE = cod_tse_5) | |
################################################################################################### | |
# Cria um banco onde serao guardas as informacoes | |
banco_uf <- NULL | |
# Os dados sao coletados em tres niveis: partidos, estados e municipios. Primeiro | |
# acessamos os partidos. Em seguida, os estados e, por fim, os municipios. | |
for(num_part in numeros_partidos) { | |
# Printa o partido cuja coletada foi iniciada | |
print(paste("Iniciado Partido numero:", num_part)) | |
for(uf in estados) { | |
# Filtra os banco de codigos para conter somente informacoes da UF da iteracao | |
cod_tse2 <- filter(cod_tse, UF == uf) | |
# Comeca o loop para os municipios da UF | |
for(i in unique(cod_tse2$CD_TSE)) { | |
# Prepara a URL a ser coletada | |
url_partidos <- paste0("http://inter01.tse.jus.br/sgip3-consulta/api/v1/orgaoPartidario/consulta?isComposicoesHistoricas=true&nrZona=0&sgUe=", i, | |
"&sgUeSuperior=", uf, "&sqPartido=", num_part, "&tpAbrangencia=83") | |
# Coleta as informacoes sobre o diretorio | |
info_diretorio <- content(GET(url_partidos), as = "text", encoding = "utf8") %>% | |
as.tbl_json() %>% | |
gather_array() %>% | |
spread_values(sqOrgaoPartidario = jnumber("sqOrgaoPartidario"), | |
numero_partido = jnumber("numero"), | |
sigla_partido = jstring("sigla"), | |
tipo_orgao = jstring("tipoOrgao"), | |
inicio_vigencia = jstring("dataInicioVigencia"), | |
fim_vigencia = jstring("dataFimVigencia"), | |
situacao = jstring("situacao"), | |
situacao_vigencia = jstring("situacaoiVigencia"), | |
nivel = jstring("abrangencia"), | |
uf = jstring("uf"), | |
municipio = jstring("municipio")) | |
# Empilha as linhas com informacoes dos diretorios da cidade | |
banco_uf <- bind_rows(banco_uf, info_diretorio) | |
} | |
# Printa que a UF foi finalizada | |
print(paste("Finalizado", uf)) | |
} | |
# Printa que o partido foi finalizado | |
print(paste("Finalizado Partido numero:", num_part)) | |
} | |
# Remover variaveis que nao serao utilizadas | |
Orgaos_Partidarios_ColetaAbr2020 <- tidyjson::as_tibble(banco) %>% | |
select(-c(document.id, array.index)) %>% | |
mutate(fim_vigencia = ifelse(fim_vigencia == "", NA, fim_vigencia)) | |
################################################################################################### | |
# Exporta o banco em csv e RData | |
write.csv2(banco_uf, "Orgaos_Partidarios_ColetaAbr2020.csv", row.names = F, fileEncoding = "latin1") | |
save(orgaos_partidarios_Abr2020, file = "orgaos_partidarios_Abr2020.RData") | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment