def obter_candidato(numero, estado, cargo, cargo_nome): if not "X" in numero and int(numero) > 0: return Candidato.obtem_do_numero(numero, estado, cargo) elif "X" in numero: return { "cargo": { "nome": cargo_nome, "codigo": cargo }, "nome": "Voto Nulo", "primeiro_nome": "Voto", "segundo_nome": "Nulo", "numero_partido": numero[:2], "numero_sem_partido": numero[2:], "numero": numero, "partido": { "sigla": "NULO" } } return { "cargo": { "nome": cargo_nome, "codigo": cargo }, "nome": "Voto em Branco", "primeiro_nome": "Voto em", "segundo_nome": "Branco", "numero_partido": numero[:2], "numero_sem_partido": numero[2:], "numero": numero, "partido": { "sigla": "BRANCO" } }
def grava_fotos_todos(self): self.stdout.write(u"INICIANDO") for estado in ESTADOS: self.stdout.write(u"ESTADO: {}".format(estado[1])) for cargo in range(1, 9): if estado[0] == 'BR' and cargo > 2: continue if estado[0] != 'BR' and cargo <= 2: continue if estado[0] == "DF" and cargo == 7: continue if estado[0] != "DF" and cargo == 8: continue cargo_nome = Cargo.objects.get(id=cargo).nome self.stdout.write(u"CARGO: {}".format(cargo_nome)) url_lista_candidatos = "http://divulgacand2014.tse.jus.br/divulga-cand-2014/eleicao/2014/UF/{}/candidatos/cargo/{}".format( estado[0], cargo) self.stdout.write( u"OBTENDO PÁGINA: {}".format(url_lista_candidatos)) conteudo_imagem = requests.get( url_lista_candidatos).content.decode('ISO-8859-1') pagina = lhtml.fromstring(conteudo_imagem) lista_candidatos = pagina.cssselect('.row-link-cand') quantidade_candidatos = len(lista_candidatos) encontrados = 0 atualizados = 0 for linha in lista_candidatos: numero_canditado = int(linha.cssselect('td')[2].text) # self.stdout.write(u"BUSCANDO CANDIDATO NO ESTADO {} DO CARGO {} COM O NÚMERO {}".format(estado[0], cargo, numero_canditado)) candidato = Candidato.obtem_do_numero( numero_canditado, estado[0], cargo) if candidato: encontrados += 1 # self.stdout.write(u"ENCONTRADO {} \r".format(candidato)) if candidato and not candidato.codigo_foto: atualizados += 1 self.stdout.write( u"ATUALIZANDO FOTO DO CANDIDATO {}".format( candidato)) candidato.codigo_foto = linha.attrib['id'] candidato.save() self.stdout.write( u"FINALIZADO: TOTAL NA PÁGINA: {}; ENCONTRADOS: {}; ATUALIZADOS: {}" .format(quantidade_candidatos, encontrados, atualizados))
def obter_candidato(numero, estado, cargo, cargo_nome): if not "X" in numero and int(numero) > 0: return Candidato.obtem_do_numero(numero, estado, cargo) elif "X" in numero: return { "cargo": {"nome": cargo_nome, "codigo": cargo}, "nome": "Voto Nulo", "primeiro_nome": "Voto", "segundo_nome": "Nulo", "numero_partido": numero[:2], "numero_sem_partido": numero[2:], "numero": numero, "partido": {"sigla": "NULO"} } return { "cargo": {"nome": cargo_nome, "codigo": cargo}, "nome": "Voto em Branco", "primeiro_nome": "Voto em", "segundo_nome": "Branco", "numero_partido": numero[:2], "numero_sem_partido": numero[2:], "numero": numero, "partido": {"sigla": "BRANCO"} }
def grava_fotos_todos(self): self.stdout.write(u"INICIANDO") for estado in ESTADOS: self.stdout.write(u"ESTADO: {}".format(estado[1])) for cargo in range(1, 9): if estado[0] == 'BR' and cargo > 2: continue if estado[0] != 'BR' and cargo <= 2: continue if estado[0] == "DF" and cargo == 7: continue if estado[0] != "DF" and cargo == 8: continue cargo_nome = Cargo.objects.get(id=cargo).nome self.stdout.write(u"CARGO: {}".format(cargo_nome)) url_lista_candidatos = "http://divulgacand2014.tse.jus.br/divulga-cand-2014/eleicao/2014/UF/{}/candidatos/cargo/{}".format(estado[0], cargo) self.stdout.write(u"OBTENDO PÁGINA: {}".format(url_lista_candidatos)) conteudo_imagem = requests.get(url_lista_candidatos).content.decode('ISO-8859-1') pagina = lhtml.fromstring(conteudo_imagem) lista_candidatos = pagina.cssselect('.row-link-cand') quantidade_candidatos = len(lista_candidatos) encontrados = 0 atualizados = 0 for linha in lista_candidatos: numero_canditado = int(linha.cssselect('td')[2].text) # self.stdout.write(u"BUSCANDO CANDIDATO NO ESTADO {} DO CARGO {} COM O NÚMERO {}".format(estado[0], cargo, numero_canditado)) candidato = Candidato.obtem_do_numero(numero_canditado, estado[0], cargo) if candidato: encontrados += 1 # self.stdout.write(u"ENCONTRADO {} \r".format(candidato)) if candidato and not candidato.codigo_foto: atualizados += 1 self.stdout.write(u"ATUALIZANDO FOTO DO CANDIDATO {}".format(candidato)) candidato.codigo_foto = linha.attrib['id'] candidato.save() self.stdout.write(u"FINALIZADO: TOTAL NA PÁGINA: {}; ENCONTRADOS: {}; ATUALIZADOS: {}".format(quantidade_candidatos, encontrados, atualizados))