Created
September 21, 2010 22:22
-
-
Save andlima/590700 to your computer and use it in GitHub Desktop.
This file contains 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
# -*- 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 '-' | |
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.') | |
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