def doador_2008(cnpj_ou_cpf): u''' Consulta o CNPJ ou CPF informado na página de doadores da campanha de 2008 e retorna uma lista contendo os campos em "doador_2008.campos". Exemplo: >>> campos = doador_2008('00000000000191') >>> campos is not None True >>> len(campos) == len(doador_2008.campos) True ''' pessoa = pessoa_or_valueerror(cnpj_ou_cpf) scraper = Scraper() # primeiro verifica se a pessoa foi doadora url = 'http://www.tse.jus.br/spce2008ConsultaFinanciamento/lovPesquisaDoador.jsp' scraper.open(url) scraper.browser.form['cdCpfCnpjDoador'] = pessoa.plain() scraper.browser.form.find_control(name='acao').readonly = False scraper.browser.form['acao'] = 'pesquisar' scraper.submit() if scraper.html.find('font', text=regexp('A pesquisa n.o retornou resultado.')): return None # e pega a lista de quem recebeu url = 'http://www.tse.jus.br/spce2008ConsultaFinanciamento/inicioServlet.do?acao=candidato' scraper.open(url) scraper.browser.form.find_control(name='cdCpfCnpjDoador').readonly = False scraper.browser.form['cdCpfCnpjDoador'] = pessoa.plain() scraper.browser.form.find_control(name='acao').readonly = False scraper.browser.form['acao'] = 'resumo' scraper.submit() url = 'http://www.tse.jus.br/spce2008ConsultaFinanciamento/listaReceitaCand.jsp' scraper.open(url) td = scraper.html.find('td', attrs={'class':'Left'}) fields = [] while True: try: # vai percorrendo os campos <td> e pegando o conteúdo items = [c for c in td.contents if isinstance(c, basestring)] s = ''.join(items) s = s.strip() fields.append(s.encode('utf8')) td = td.nextSibling.nextSibling except AttributeError: break return fields
def doador_2004(cnpj_ou_cpf): u''' Retorna uma tabela com as doações desta pessoa (cnpj_ou_cpf). A tabela é uma lista de listas, cada uma contendo os campos em "doador_2004.campos". >>> tabela = doador_2004('85.907.012/0001-57') >>> tabela is not None True >>> len(tabela) 16 >>> len(tabela[0]) == len(doador_2004.campos) True URL: http://www.tse.gov.br/internet/eleicoes/2004/prest_blank.htm ''' pessoa = pessoa_or_valueerror(cnpj_ou_cpf) scraper = Scraper() url = 'http://www.tse.gov.br/sadEleicao2004Prestacao/spce/index.jsp' scraper.open(url) scraper.browser.select_form(name='formDoador') scraper.browser.form.find_control(name='nome').readonly = False scraper.browser.form.find_control(name='numero').readonly = False scraper.browser.form['numero'] = pessoa.plain() scraper.browser.form['nome'] = '%' try: scraper.submit() except: return None if not scraper.html.find(text=regexp('Valor Total de Fornecimento')): return None table = scraper.html.findAll('table')[-1] lines = [] for tr in table.findAll('tr')[1:-1]: columns = [] for td in tr.findAll('td'): try: contents = td.b.contents except: contents = td.contents content = ' '.join(contents).strip() text = html2unicode(content) columns.append(text) lines.append(columns) return lines
def doador_2006(cnpj_ou_cpf): u''' Retorna uma tabela com as doações desta pessoa (cnpj_ou_cpf). A tabela é uma lista de listas, cada uma contendo os campos em "doador_2006.campos". >>> tabela = doador_2006('181.929.206-15') >>> tabela is not None True >>> len(tabela) 1 >>> len(tabela[0]) == len(doador_2006.campos) True URL: http://www.tse.gov.br/internet/eleicoes/2006/prest_contas_blank.htm ''' pessoa = pessoa_or_valueerror(cnpj_ou_cpf) scraper = Scraper() url = 'http://www.tse.gov.br/sadSPCE06F3/faces/careceitaByDoador.jsp' scraper.open(url) scraper.browser.form['frmByDoador:cdCpfCgc'] = pessoa.plain() scraper.submit(name='frmByDoador:_id4') strong = scraper.html.find('strong', text=regexp('.*prestadas pelo doador.*')) if strong is None: return None table = strong.parent.parent.parent.parent table = table.nextSibling.nextSibling.nextSibling.nextSibling lines = [] for tr in table.tbody.findAll('tr'): columns = [] for td in tr.findAll('td'): content = td.contents[0].strip() text = html2unicode(content) columns.append(text) lines.append(columns) return lines