def deps(): url_base = 'http://agencia.tse.jus.br/estatistica/sead/odsele/consulta_cand/' arquivos = ['consulta_cand_2014', 'consulta_cand_2018'] with open(f'{DATA_DIR}/candidato_deputados.csv', 'a', newline='', encoding='latin-1') as infile: writer = csv.writer(infile, delimiter=';') for arquivo in arquivos: url = url_base + arquivo + '.zip' urlretrieve(url, f'{DATA_DIR}/{arquivo}.zip') with ZipFile(f'{DATA_DIR}/{arquivo}.zip', 'r') as zip_file: zip_file.extract(f'{arquivo}_SP.csv', path=f'{DATA_DIR}') os.remove(f'{DATA_DIR}/{arquivo}.zip') with open(f'{DATA_DIR}/{arquivo}_SP.csv', 'r', encoding='latin-1') as original: reader = csv.reader(original, delimiter=';') next(reader, None) for row in reader: writer.writerow(row) os.remove(f'{DATA_DIR}/{arquivo}_SP.csv') dataset = pd.read_csv(f'{DATA_DIR}/candidato_deputados.csv', header=0, names=cols_cands, encoding='latin-1', sep=';') dataset = dataset[dataset['ds_cargo'] == 'DEPUTADO ESTADUAL'] dataset.drop(columns=drop_cols_cands, inplace=True) save(dataset, 'cand') os.remove(f'{DATA_DIR}/candidato_deputados.csv')
def partido(): url_base = 'https://www.al.sp.gov.br/repositorioDados/' url_file = 'deputados/partidos.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[['Numero', 'Sigla', 'Nome']] dataset = dataset.rename(columns=cols_partido) save(dataset, 'dep_partidos_indice')
def pareceres_tp(): url_base = 'https://www.al.sp.gov.br/repositorioDados/' url_file = 'processo_legislativo/tipo_parecer.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[['IdTipoParcer', 'TipoParecer']] dataset = dataset.rename(columns=cols_pareceres_tp) save(dataset, 'doc_pareceres_tp_indice')
def base(): url_base = 'https://www.al.sp.gov.br/repositorioDados/' url_file = 'deputados/deputado_base_eleitoral.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[['IdDeputado', 'IdBaseEleitoral', 'NrOrdem']] dataset = dataset.rename(columns=cols_base) save(dataset, 'dep_bases')
def subtemas(): url_base = 'https://www.al.sp.gov.br/repositorioDados/legislacao/' url_file = 'legislacao_subtemas.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[['IdSubTema', 'SubTema']] dataset = dataset.rename(columns=cols_subtemas) save(dataset, 'leg_subtemas_indice')
def tipos(): url_base = 'https://www.al.sp.gov.br/repositorioDados/legislacao/' url_file = 'legislacao_tipo_normas.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[['IdTipo', 'DsTipo']] dataset = dataset.rename(columns=cols_tipos) save(dataset, 'leg_tipos_indice')
def area(): url_base = 'https://www.al.sp.gov.br/repositorioDados/' url_file = 'deputados/deputado_area_atuacao.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[['IdDeputado', 'IdArea', 'NrOrdem']] dataset = dataset.rename(columns=cols_area) save(dataset, 'dep_areas')
def naturezas(): url_base = 'https://www.al.sp.gov.br/repositorioDados/' url_file = 'processo_legislativo/naturezasSpl.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[['idNatureza', 'nmNatureza', 'sgNatureza', 'tpNatureza']] dataset = dataset.rename(columns=cols_naturezas) save(dataset, 'doc_naturezas_indice')
def base_indice(): url_base = 'https://www.al.sp.gov.br/repositorioDados/' url_file = 'deputados/bases_eleitorais.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[['Id', 'Nome']] dataset = dataset.rename(columns={'Id': 'id_base', 'Nome': 'nm_base'}) save(dataset, 'dep_bases_indice')
def palavras_chave(): url_base = 'https://www.al.sp.gov.br/repositorioDados/' url_file = 'processo_legislativo/palavras_chave.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[['IdPalavra', 'Palavra', 'PalavraSemAcento']] dataset = dataset.rename(columns=cols_pal_chave) save(dataset, 'doc_palavras_indice')
def lotacao_historico(): url_base = 'https://www.al.sp.gov.br/repositorioDados/administracao/' url_file = 'funcionarios_lotacoes.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[[ 'NomeFuncionario', 'NomeUA', 'IdUA', 'DataInicio', 'DataFim' ]] dataset = dataset.rename(columns=cols_lot_hist) save(dataset, 'serv_lotacao_historico')
def coms(): url_base = 'https://www.al.sp.gov.br/repositorioDados/' url_file = 'processo_legislativo/comissoes.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[[ 'IdComissao', 'NomeComissao', 'SiglaComissao', 'DescricaoComissao', 'DataFimComissao' ]] dataset = dataset.rename(columns=cols_com) save(dataset, 'com')
def lotacao_atual(): url_base = 'https://www.al.sp.gov.br/repositorioDados/administracao/' url_file = 'lotacoes.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[[ 'NomeFuncionario', 'NomeCargo', 'IdCargo', 'NomeRegime', 'IdRegime', 'NomeUA', 'IdUA' ]] dataset = dataset.rename(columns=cols_lot_atual) save(dataset, 'serv_lotacao_atual')
def servs(): url_base = 'https://www.al.sp.gov.br/repositorioDados/administracao/' url_file = 'funcionarios_cargos.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[[ 'NomeFuncionario', 'NomeCargo', 'IdCargo', 'NomeRegime', 'IdRegime', 'DataInicio', 'DataFim' ]] dataset = dataset.rename(columns=cols_servs) save(dataset, 'serv')
def votacoes(): url_base = 'https://www.al.sp.gov.br/repositorioDados/' url_file = 'processo_legislativo/comissoes_permanentes_votacoes.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[[ 'IdReuniao', 'IdPauta', 'IdComissao', 'IdDocumento', 'IdDeputado', 'Deputado', 'TipoVoto', 'Voto' ]] dataset = dataset.rename(columns=cols_voto) save(dataset, 'com_votacoes')
def reunioes(): url_base = 'http://www.al.sp.gov.br/repositorioDados/' url_file = 'processo_legislativo/comissoes_permanentes_reunioes.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[[ 'IdReuniao', 'IdComissao', 'IdPauta', 'NrLegislatura', 'NrConvocacao', 'TipoConvocacao', 'Data', 'CodSituacao', 'Situacao', 'Presidente' ]] dataset = dataset.rename(columns=cols_reun) save(remove_dep(dataset), 'com_reunioes')
def membros(): url_base = 'https://www.al.sp.gov.br/repositorioDados/' url_file = 'processo_legislativo/comissoes_membros.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[[ 'SiglaComissao', 'IdComissao', 'NomeMembro', 'IdMembro', 'Papel', 'IdPapel', 'Efetivo', 'DataInicio', 'DataFim' ]] dataset = dataset.rename(columns=cols_membros) save(dataset, 'com_membros')
def deliberacoes(): url_base = 'https://www.al.sp.gov.br/repositorioDados/' url_file = 'processo_legislativo/comissoes_permanentes_deliberacoes.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[[ 'IdReuniao', 'IdDocumento', 'IdPauta', 'NrOrdem', 'DataInclusao', 'DataSaida', 'Deliberacao', 'IdDeliberacao' ]] dataset = dataset.rename(columns=cols_delib) save(dataset, 'com_deliberacoes')
def deps(): url_base = 'https://www.al.sp.gov.br/repositorioDados/' url_file = 'deputados/deputados.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[[ 'NomeParlamentar', 'Matricula', 'IdDeputado', 'IdSPL', 'IdUA', 'Partido', 'Sala', 'Andar', 'Telefone', 'Email', 'PlacaVeiculo', 'Aniversario', 'Situacao' ]] dataset = dataset.rename(columns=cols_deps) save(dataset, 'dep')
def gasto(): url_base = 'https://www.al.sp.gov.br/repositorioDados/' url_file = 'deputados/despesas_gabinetes.xml' url = url_base + url_file xml_data = req.get(url).content dataset = ParseXmlRemote(xml_data).process_data() dataset = dataset[[ 'Deputado', 'Matricula', 'Ano', 'Mes', 'Tipo', 'Fornecedor', 'CNPJ', 'Valor' ]] dataset = dataset.rename(columns=cols_gastos) dataset['tp_categoria'].replace(dict_gasto, inplace=True) save(dataset, 'dep_gastos_cota')
def palavras(): url_base = 'http://www.al.sp.gov.br/repositorioDados/processo_legislativo/' arquivo_zip = 'documento_palavras.zip' url = url_base + arquivo_zip arquivo_xml = 'documento_palavras.xml' fetch_zip(url, arquivo_zip) xml_data = f'{DATA_DIR}/{arquivo_xml}' dataset = ParseXml(xml_data).process_data() dataset = dataset[['IdDocumento', 'IdPalavra']] dataset = dataset.rename(columns=cols_palavras) save(dataset, 'doc_palavras') os.remove(xml_data)
def bens(): url_base = 'http://agencia.tse.jus.br/estatistica/sead/odsele/bem_candidato/' arquivos = ['bem_candidato_2014', 'bem_candidato_2018'] with open(f'{DATA_DIR}/candidato_bem.csv', 'a', newline='', encoding='latin-1') as infile: writer = csv.writer(infile, delimiter=';') for arquivo in arquivos: url = url_base + arquivo + '.zip' urlretrieve(url, f'{DATA_DIR}/{arquivo}.zip') with ZipFile(f'{DATA_DIR}/{arquivo}.zip', 'r') as zip_file: zip_file.extract(f'{arquivo}_SP.csv', path=f'{DATA_DIR}') os.remove(f'{DATA_DIR}/{arquivo}.zip') with open(f'{DATA_DIR}/{arquivo}_SP.csv', 'r', encoding='latin-1') as original: reader = csv.reader(original, delimiter=';') next(reader, None) for row in reader: writer.writerow(row) os.remove(f'{DATA_DIR}/{arquivo}_SP.csv') bens = pd.read_csv(f'{DATA_DIR}/candidato_bem.csv', header=0, names=cols_bens, encoding='latin-1', sep=';', decimal=',') cands = pd.read_csv(f'{DATA_DIR}/cand.csv') dataset = cands.merge(bens, on='sq_candidato', how='left') dataset['vlr_bem'].fillna(0.0, inplace=True) dataset.drop(columns=drop_cols_bens, inplace=True) dataset = dataset[[ 'dt_geracao_x', 'hh_geracao_x', 'ano_eleicao_x', 'nm_tipo_eleicao_x', 'ds_eleicao_x', 'dt_eleicao_x', 'sg_ue_x', 'nm_ue_x', 'sq_candidato', 'nr_candidato', 'nm_candidato', 'nm_urna_candidato', 'nm_social_candidato', 'nr_cpf_candidato', 'ds_tp_bem', 'ds_bem', 'vlr_bem' ]] dataset.columns = dataset.columns.str.replace('_x', '') save(dataset, 'cand_bens') os.remove(f'{DATA_DIR}/candidato_bem.csv')
def tramitacao_regime(): url_base = 'http://www.al.sp.gov.br/repositorioDados/processo_legislativo/' arquivo_zip = 'documento_regime.zip' url = url_base + arquivo_zip arquivo_xml = 'documento_regime.xml' fetch_zip(url, arquivo_zip) xml_data = f'{DATA_DIR}/{arquivo_xml}' dataset = ParseXml(xml_data).process_data() dataset = dataset[[ 'IdDocumento', 'IdRegime', 'NomeRegime', 'DataInicio', 'DataFim' ]] dataset = dataset.rename(columns=cols_tramit_regime) save(dataset, 'doc_tramitacao_regime') os.remove(xml_data)
def anotacoes(): url_base = 'http://www.al.sp.gov.br/repositorioDados/legislacao/' arquivo_zip = 'legislacao_norma_anotacoes.zip' url = url_base + arquivo_zip arquivo_xml = 'legislacao_norma_anotacoes.xml' fetch_zip(url, arquivo_zip) xml_data = f'{DATA_DIR}/{arquivo_xml}' dataset = ParseXml(xml_data).process_data() dataset = dataset[[ 'IdNorma', 'NumNormaRel', 'DataNormaRel', 'TipoNormaRel', 'DsRel', 'DsOrigem', 'IdTipoRel', 'NumComplNormaRel' ]] dataset = dataset.rename(columns=cols_anota) save(dataset, 'leg_anotacoes') os.remove(xml_data)
def docs(): url_base = 'http://www.al.sp.gov.br/repositorioDados/processo_legislativo/' arquivo_zip = 'proposituras.zip' url = url_base + arquivo_zip arquivo_xml = 'proposituras.xml' fetch_zip(url, arquivo_zip) xml_data = f'{DATA_DIR}/{arquivo_xml}' dataset = ParseXml(xml_data).process_data() dataset = dataset[[ 'AnoLegislativo', 'CodOriginalidade', 'Ementa', 'DtEntradaSistema', 'DtPublicacao', 'IdDocumento', 'IdNatureza', 'NroLegislativo' ]] dataset = dataset.rename(columns=cols_docs) save(dataset, 'doc') os.remove(xml_data)
def andamento_atual(): url_base = 'http://www.al.sp.gov.br/repositorioDados/processo_legislativo/' arquivo_zip = 'documento_andamento_atual.zip' url = url_base + arquivo_zip arquivo_xml = 'documento_andamento_atual.xml' fetch_zip(url, arquivo_zip) xml_data = f'{DATA_DIR}/{arquivo_xml}' dataset = ParseXml(xml_data).process_data() dataset = dataset[[ 'IdDocumento', 'Data', 'NrOrdem', 'Descricao', 'IdTpAndamento', 'TpAndamento', 'IdEtapa', 'NmEtapa', 'IdComissao', 'SiglaComissao' ]] dataset = dataset.rename(columns=cols_andam_atual) dataset['ds_andamento'] = dataset['ds_andamento'].apply(remove_break_line) save(dataset, 'doc_andamento') os.remove(xml_data)
def salarios(): with open('temp.csv', 'a') as file: dw = csv.DictWriter(file, fieldnames=cols_salarios, lineterminator='\n') dw.writeheader() ano_atual = datetime.now().year for ano in range(2014, ano_atual + 1): for mes in range(1, 13): mes = format(mes, '02d') url_base = 'https://www.al.sp.gov.br/repositorio/' url_file = f'folha-de-pagamento/folha-{ano}-{mes}-detalhada.html' url = url_base + url_file data = req.get(url).content soup = BeautifulSoup(data, 'html.parser') for tr in soup.find_all('tr')[1:]: tds = tr.find_all('td') dw.writerow({'nm_funcionario': tds[0].get_text().strip(), 'ano': int(ano), 'mes': int(mes), 'vlr_bruto': sanitize_float(tds[1]), 'vlr_liquido': sanitize_float(tds[2]), 'tributos': sanitize_float(tds[3]), 'abono_permanencia': sanitize_float(tds[4]), 'ferias_bruto': sanitize_float(tds[5]), 'ferias_desconto': sanitize_float(tds[6]), 'ferias_liquido': sanitize_float(tds[7]), '13_bruto': sanitize_float(tds[8]), '13_desconto': sanitize_float(tds[9]), '13_liquido': sanitize_float(tds[10]), 'retroativo_bruto': sanitize_float(tds[11]), 'retroativo_desconto': sanitize_float(tds[12]), 'retroativo_liquido': sanitize_float(tds[13]), 'outros_bruto': sanitize_float(tds[14]), 'outros_desconto': sanitize_float(tds[15]), 'indenizacao': sanitize_float(tds[16]) }) dataset = pd.read_csv('temp.csv') save(dataset, 'serv_salarios') os.remove('temp.csv')
def pareceres(): url_base = 'http://www.al.sp.gov.br/repositorioDados/processo_legislativo/' arquivo_zip = 'propositura_parecer.zip' url = url_base + arquivo_zip arquivo_xml = 'propositura_parecer.xml' fetch_zip(url, arquivo_zip) xml_data = f'{DATA_DIR}/{arquivo_xml}' dataset = ParseXml(xml_data).process_data() dataset = dataset[[ 'AnoParecer', 'Descricao', 'Data', 'AdReferendum', 'RelatorEspecial', 'VotoVencido', 'IdComissao', 'IdDocumento', 'IdParecer', 'IdTipoParecer', 'TipoParecer', 'NrParecer', 'SiglaComissao', 'TpParecer', 'URL' ]] dataset = dataset.rename(columns=cols_pareceres) save(dataset, 'doc_pareceres') os.remove(xml_data)
def legs(): url_base = 'http://www.al.sp.gov.br/repositorioDados/legislacao/' arquivo_zip = 'legislacao_normas.zip' url = url_base + arquivo_zip arquivo_xml = 'legislacao_normas.xml' fetch_zip(url, arquivo_zip) xml_data = f'{DATA_DIR}/{arquivo_xml}' dataset = ParseXml(xml_data).process_data() dataset = dataset[[ 'IdNorma', 'Numero', 'Ano', 'IdTipo', 'Data', 'Situacao', 'Ementa', 'Autores', 'CadDO', 'PagDO', 'DataDO', 'URLDO', 'URLFicha', 'URLIntegra', 'URLCompilado', 'Promulg', 'Ambito' ]] dataset = dataset.rename(columns=cols_legs) dataset['tx_ementa'] = dataset['tx_ementa'].apply(remove_break_line) save(dataset, 'leg') os.remove(xml_data)