Skip to content

Instantly share code, notes, and snippets.

@andlima
Created September 21, 2010 22:22
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 andlima/590700 to your computer and use it in GitHub Desktop.
Save andlima/590700 to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
# Este script extrai, para cada unidade federativa, todas as coligações
# partidárias para deputados estaduais e federais das eleições brasileiras
# de 2010.
#
# Por André Lima
# Email: andre (ponto) lima (arroba) gmail (ponto) com
# Twitter: @andlima
#
# Licença: é permitido a qualquer um usar, distribuir e modificar livremente
# este arquivo.
import os
import urllib
ESTADOS = ['AC', 'AM', 'PA', 'RR', 'AP', 'RO', 'TO', 'MA', 'BA', 'PI', 'CE',
'RN', 'PB', 'PE', 'AL', 'SE', 'MT', 'MS', 'DF', 'GO', 'MG', 'SP',
'RJ', 'ES', 'PR', 'SC', 'RS', ]
CARGOS = ['Federal', 'Estadual', 'Distrital']
CARGO_VALUE = {'Federal': '6', 'Estadual': '7', 'Distrital': '8'}
URL_BASE = ('http://divulgacand2010.tse.jus.br/divulgacand2010/jsp/'
'exportarDadosCandidatoCSV.action?'
'siglaUF=%s&cdCargoCand=%s&situacao=1')
FILE_NAME = os.path.join('coligacoes_cache', 'conteudo-%s-%s.csv')
def imprime_estado_cargo(coligacoes, avulsos):
print u'Coligações:'
for coligacao in coligacoes:
print ' - ', coligacao
print 'Avulsos:', ', '.join(avulsos) or '-'
print
def processa(estado, cargo):
try:
with open(FILE_NAME % (estado, cargo), 'r') as f:
linhas = [linha.strip() for linha in f]
except IOError:
x = urllib.urlopen(URL_BASE % (estado, CARGO_VALUE[cargo]))
linhas = x.readlines()
with open(FILE_NAME % (estado, cargo), 'w') as f:
f.writelines(linhas)
linhas = [linha.strip() for linha in linhas]
linhas = [x.split(';') for x in linhas[1:]]
coligacoes = set(x[7] for x in linhas if x[7] != '-')
avulsos = set(x[4] for x in linhas if x[7] == '-')
return (coligacoes, avulsos)
def main():
print (u'Coligações partidárias para deputados estaduais e federais, '
'por estado.')
print
try:
os.mkdir('coligacoes_cache')
except:
pass
for estado in ESTADOS:
for cargo in CARGOS:
(coligacoes, avulsos) = processa(estado, cargo)
if coligacoes or avulsos:
print estado, '-', cargo
imprime_estado_cargo(coligacoes, avulsos)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment