Skip to content

Instantly share code, notes, and snippets.

@lgelape
Last active April 17, 2020 23:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lgelape/f8e7acd0e418ab478ac2d859b6a5ab9a to your computer and use it in GitHub Desktop.
Save lgelape/f8e7acd0e418ab478ac2d859b6a5ab9a to your computer and use it in GitHub Desktop.
Código para coletar informações de órgãos partidários brasileiros
###################################################################################################
### 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