import csv import requests import time import os from unicodedata import normalize ###revisto def adicionar (nomedoarquivo, dados): arquivo = open(nomedoarquivo, 'a', encoding='utf-8') arquivo.write(dados) arquivo.close def csv_to_list (file): csv.field_size_limit(16777216) lista = [] with open(file, encoding='utf-8') as csv_file: csv_reader = csv.reader(csv_file, delimiter=',') for row in csv_reader: lista.append(row) return (lista) def limpar(fonte): fonte = fonte.replace('\n',' ') fonte = fonte.replace(' ',' ') fonte = fonte.replace(' ',' ') fonte = fonte.lstrip(' ') fonte = fonte.lstrip(' ') fonte = fonte.lstrip(' ') fonte = fonte.lstrip(' ') fonte = fonte.lstrip(' ') fonte = fonte.lstrip(' ') fonte = fonte.lstrip('"') fonte = fonte.lstrip('>') fonte = fonte.replace(' ',' ') fonte = fonte.replace('\t', '') fonte = fonte.replace('/#','') fonte = fonte.strip(' ') fonte = fonte.strip(' ') fonte = fonte.strip('-') fonte = fonte.strip(' ') fonte = fonte.strip(' ') fonte = fonte.strip(' ') return fonte def limpar_tudo (fonte): fonte = fonte.replace('\n',' ') fonte = fonte.replace(' ',' ') fonte = fonte.replace(' ',' ') fonte = fonte.lstrip(' ') fonte = fonte.lstrip(' ') fonte = fonte.lstrip(' ') fonte = fonte.lstrip(' ') fonte = fonte.lstrip(' ') fonte = fonte.lstrip(' ') fonte = fonte.lstrip('"') fonte = fonte.lstrip('>') fonte = fonte.replace(' ',' ') fonte = fonte.replace('\t', '') fonte = fonte.replace('/#','') fonte = fonte.strip(' ') fonte = fonte.strip(' ') fonte = fonte.strip('-') fonte = fonte.strip(' ') fonte = fonte.strip(' ') fonte = fonte.strip(' ') fonte = fonte.replace('\r','|') fonte = fonte.replace('|||||','|') fonte = fonte.replace('||||','|') fonte = fonte.replace('|||','|') fonte = fonte.replace('||','|') fonte = fonte.strip('|') return fonte def get (url): user_agent = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'} html = requests.get(url, headers = user_agent) html.encoding = 'utf-8' html = html.text return html def get_CC (url): user_agent = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'} html = requests.get(url, headers = user_agent) html.encoding = 'utf-8' html = html.text html = extrair (html, '
', '
') return html def gravar (nomedoarquivo, dados): arquivo = open(nomedoarquivo, 'w', encoding='utf-8') arquivo.write(dados) arquivo.close def write_csv_header (nomedoarquivo, string_campos): string_campos = string_campos.replace('\n','') lista_de_campos = string_campos.split(',') if nomedoarquivo in os.listdir(): arquivoaberto = open(nomedoarquivo, mode='r+', encoding="utf-8", newline='') html = arquivoaberto.read() arquivoaberto.close() if lista_de_campos[0] not in html[:100]: arquivoaberto = open(nomedoarquivo, mode='w', encoding="utf-8", newline='') arquivoaberto_csv = csv.writer(arquivoaberto, delimiter=',') arquivoaberto_csv.writerow(lista_de_campos) arquivoaberto.close() else: arquivoaberto = open(nomedoarquivo, mode='w', encoding="utf-8", newline='') arquivoaberto_csv = csv.writer(arquivoaberto, delimiter=',') arquivoaberto_csv.writerow(lista_de_campos) arquivoaberto.close() def write_csv_row (nomedoarquivo,dados): if dados != []: arquivoaberto = open(nomedoarquivo, mode='a+', encoding="utf-8", newline='') arquivoaberto_csv = csv.writer(arquivoaberto, delimiter=',', quotechar = '"') arquivoaberto_csv.writerow(dados) arquivoaberto.close() def write_csv_rows (nomedoarquivo, dados): if dados != []: arquivoaberto = open(nomedoarquivo, mode='a+', encoding="utf-8", newline='') arquivoaberto_csv = csv.writer(arquivoaberto, delimiter=',', quotechar = '"') arquivoaberto_csv.writerows(dados) arquivoaberto.close() ### a rever def position1(list): return(list[1]) def csv_to_list_general (file): csv.field_size_limit(16777216) lista = [] with open(file) as csv_file: csv_reader = csv.reader(csv_file, delimiter=',') for row in csv_reader: lista.append(row) return (lista) def csv_to_list_titles(file): csv.field_size_limit(16777216) lista = [] with open(file, encoding='utf-8') as csv_file: csv_reader = csv.reader(csv_file, delimiter=',') for row in csv_reader: lista.append(row) n_campos = len(lista[0]) for campo in range (n_campos): tipo = str(campo) + ':string:' integral = 0 amostra = len(lista)//10 for n in range (amostra): objeto = lista[n][campo] if objeto != '' and objeto[0] == '[': tipo = str(campo) + ':lista:' if objeto[1] == '[': tipo = str(campo) + ':lista2:' try: int(objeto) except ValueError: integral = integral + 1 if integral == 1: tipo = str(campo) + ':int:' lista[0][campo] = tipo + str(lista[0][campo]) print (f'Campo {campo} = {str(lista[0][campo])}') for campo in range (n_campos): for linha in lista[1:]: if 'int:' in lista[0][campo]: linha[campo] = int(linha[campo]) if 'lista:' in lista[0][campo]: linha[campo] = linha[campo][1:-1] # linha[campo] = linha[campo][','] if 'lista2:' in lista[0][campo]: linha[campo] = linha[campo][2:-2] linha[campo] = linha[campo].split('], [') for n in range (len(linha[campo])): linha[campo][n] = linha[campo][n].replace("'",'') linha[campo][n] = linha[campo][n].replace(", ",',') linha[campo][n] = linha[campo][n].split(',') return (lista) def remover_acentos(txt): return normalize('NFKD', txt).encode('ASCII', 'ignore').decode('utf-8') def extrair(fonte,MarcadorInicio, MarcadorFim): if MarcadorInicio not in fonte: return 'NA' else: inicio = fonte.find(MarcadorInicio) + len(MarcadorInicio) fim = fonte.find(MarcadorFim, inicio) if MarcadorFim == '' or fim == -1: return fonte[inicio:] elif MarcadorInicio == '': return fonte[:fim] else: return fonte[inicio:fim] def extrair_campo_lista (string, split, lista_inicio_fim): # define o número de elementos a serem extraídos n_elementos= string.count(split) # cria uma lista (dados) com os dados da string, segmentada no split elementos = string.split(split) elementos = elementos[1:] # imprime o número de elementos a serem extraídos # print (str(n_elementos) + ' elementos') #define a lista que será retornada como resultado campo_lista = [] # iteração sobre cada um dos n elementos for item in range(n_elementos): # carrega na variável campo um elemento de cada vez campo = elementos[item] # print (campo) # redefine a lista elemento_lista elemento_lista = [] # insere no elemento o número de ordem, iniciando em 1 elemento_lista.append(['ORDEM', str(item+1)]) # identifica os atributos de cada elemento for elemento in range(len(lista_inicio_fim)): # extrai os marcadores da lista marcadores = lista_inicio_fim[elemento] atributo = marcadores[0].upper() inicio = marcadores[1] fim = marcadores[2] # extrai o atributo a partir dos marcadores dado = '' dado = extrair(campo, inicio, fim) dado = limpar(dado) dado = limpar(dado) dado = remover_acentos(dado) elemento_lista.append([atributo, dado.upper()]) # acrescenta o elemento extraído na lista que compõe o campo campo_lista.append(elemento_lista) # retorna a lista de elementos como resultado função return campo_lista def ajustar_nome(string): string.strip() trocar1 =[['ASSOC ','ASSOCIACAO '], ['GONGRESSO NACIONAL','CONGRESSO NACIONAL'], ['REPUBICA','REPUBLICA'], ['PROCURADOR GERAL','PROCURADOR-GERAL'], ['REUBLICA','REPUBLICA'], ['GONGRESSO','CONGRESSO'], ['(','- '], [')',''], [' ',' '], ['MINISTRA','MINISTRO'], ['PRO-BELEZA','PROBELEZA'], ['VICE-GOV','V.GOV'], ['VICE PRESIDENTE','VICE-PRESIDENTE'], ['VICE-PRE','V.PRE'], ['CORREGEDOR-GERAL','CORR.GERAL'], ['CORREGEDORIA-GERAL','CORR.GERAL'], ['CORREGEDORIAGERAL','CORR.GERAL'], ['CORREGEDORIADA','CORR.GERAL DA'], ['ARCO-IRIS','ARCOIRIS'], ['TRT - ','TRT '], ['REGIAO -','REGIAO'], ['MATO-GROSSENSE','MATOGROSSENSE'], ['TRT - ','TRT '], ['CONSTAS ','CONTAS'], ['J.G.A.C.','JOSE GABRIEL AVILA CAMPELLO'], ['/DO ','/'], ['-',' - '], [' ',' '], [' ',' '], [']',''], ['- ME',''], ['S/A','S.A.'], ['LTDA.','LTDA'], ['PREFEITA','PREFEITO'], ['PREFEITO DO MUNICIPIO','PREFEITO'], ['PREFEITO D', 'PREF. D'], ['PREFEITO MUNICIPAL D','PREF. D'], ['PREFEITURA D','PREF. D'], ['PREFEITURA MUNICIPAL','PREF.'], ['MUNICIPIO D','MUN. D'], ['MINISTRO D','MIN. D'], ['MINISTERIO D','MIN. D'], ['MESA DIRETIVA','MESA DIRETORA'], ['MESA DIRETORA','M.D.'], ['MESA DA','M.D. DA'], ['SENADO FEDERAL','SENADO'], ['JUIZ DE DIREITO','JUIZ'], ['CORREGEDOR ','CORREGEDORIA'], ['CORREGEDORIA ','CORREG. '], ['CAMARA DE VEREADORES','CAMARA MUNICIPAL'], ['CAMARA MUNICIPAL','C.MUN.'], ['C.MUN. DO MUNICIPIO','C.MUN.'], ['CAMPINHAS','CAMPINAS'], ['DE TOCANTINS','DO TOCANTINS'], ['LEGISLTATIVA','LEGISLATIVA'], ['PRO TESTE','PROTESTE'], ['E TV ABERT','E TELEVISAO ABERT'], ['EMPRESARIOS DE RADIO','EMPRESAS DE RADIO'], ['ADEPOL/BRASIL','ADEPOL'], ['MAGISTRADOS DO BRASIL AMB','MAGISTRADOS BRASILEIROS AMB'], ['ANOREG/BR','ANOREG'], ['ANADEP A','ANADEP'], ['DAS DEFENSORAS E DEFENSORES','DAS DEFENSORAS E DOS DEFENSORES'], ['URBANOS NTU','URBANOS'], ['D.G. DA ',''], ['D.G. DO ',''], ['DIRETOR DA ',''], ['DIRETOR DO ',''], [',',''], ['DP DA UNIAO','DPU'], ['DPU DPU','DPU'], ['DP GERAL','DP.GERAL'], ['DP.GERAL','DP'], ['FED NAC','FED.NAC.'], ['AUXI LIARES','AUXILIARES'], ['/ACRE', '/AC'], ['/ALAGOAS', '/AL'], ['/AMAPA', '/AP'], ['/AMAZONAS', '/AM'], ['/BAHIA', '/BA'], ['/CEARA', '/CE'], ['/DISTRITO FEDERAL', '/DF'], ['/ESPIRITO SANTO', '/ES'], ['/GOIAS', '/GO'], ['/MARANHAO', '/MA'], ['/MATO GROSSO DO SUL', '/MS'], ['/MATO GROSSO', '/MT'], ['/MINAS GERAIS', '/MG'], ['/PARAIBA', '/PB'], ['/PARANA', '/PR'], ['/PERNAMBUCO', '/PE'], ['/PIAUI', '/PI'], ['/RIO DE JANEIRO', '/RJ'], ['/RIO GRANDE DO NORTE', '/RN'], ['/RIO GRANDE DO SUL', '/RS'], ['/RONDONIA', '/RO'], ['/RORAIMA', '/RR'], ['/SANTA CATARINA', '/SC'], ['/SAO PAULO', '/SP'], ['/SERGIPE', '/SE'], ['/PARA', '/PA'], ['/TOCANTINS', '/TO'], ['/ACRE','/AC'], ['/RIO DE JANEIRO','/RJ'] ] for item in trocar1: string = string.replace(item[0],item[1]) if 'DEMOCRATAS' in string and 'DEM ' in string: string = 'DEM/PFL' if 'DEMOCRATAS -' in string: string = 'DEM/PFL' if 'DEMOCRATAS' == string: string = 'DEM/PFL' if ' SINDICATO ' in string: string = string[string.find(' SINDICATO ')+1:] + ' ' + string[:string.find(' SINDICATO ')] if ' SOCIEDADE BRASILEIRA ' in string: string = string[string.find(' SOCIEDADE BRASILEIRA ')+1:] + ' ' + string[:string.find(' SOCIEDADE BRASILEIRA ')] substituir = [ ['PROCURADOR - GERAL DA REPUBLICA','PGR'], ['PROCURADOR GERAL DA REPUBLICA','PGR'], ['PROCURADORA - GERAL DA REPUBLICA','PGR'], ['PROCURADORIA - GERAL DA REPUBLICA','PGR'], ['CONSELHO FEDERAL DA ORDEM DOS ADVOGADOS DO BRASIL','OAB'], ['PARTIDO PROGRESSISTA','PP'], ['PARTIDO COMUNISTA DO BRASIL','PC DO B'], ['PARTIDO COMUNISTA BRASILEIRO','PCB'], ['PARTIDO DA FRENTE LIBERAL','DEM/PFL'], ['PARTIDO DA MOBILIZACAO NACIONAL','PMN'], ['PARTIDO DA MULHER BRASILEIRA','PMB'], ['REEDIFICACAO DA ORDEM NACIONAL','PRONA'], ['PARTIDO DA REPUBLICA','PR'], ['DEMOCRACIA BRASILEIRA','PSDB'], ['PSDB','PSDB'], ['DEMOCRATA CRISTAO','PDC'], ['PARTIDO DEMOCRATICO TRABALHISTA','PDT'], ['PARTIDO DO MOVIMENTO DEMOCRATICO','PMDB'], ['TRABALHADORES DO BRASIL','PT DO B'], ['PARTIDO TRABALHISTA DO BRASIL','PT DO B'], ['PARTIDO DOS TRABALHADORES','PT'], ['PARTIDO HUMANISTA DA SOLIDARIEDADE','PHS'], ['PARTIDO LIBERAL','PL'], ['PARTIDO POPULAR SOCIAL','PPS'], ['PARTIDO PROGRESSISTA BRASILEIRO','PPB'], ['PARTIDO PROGRESSISTA REFORMADOR','PPR'], ['PARTIDO PROGRESSISTA','PP'], ['RENOVADOR TRABALHISTA BRASILEIRO','PRTB'], ['PARTIDO REPUBLICANO BRASILEIRO','PRB'], ['REPUBLICANO DA ORDEM SOCIAL','PROS'], ['PARTIDO REPUBLICANO PROGRESSISTA','PRP'], ['PARTIDO SOCIAL CRISTAO','PSC'], ['PARTIDO SOCIAL DEMOCRATA CRISTAO','PSDC'], ['PARTIDO SOCIAL DEMOCRATICO','PSD'], ['PARTIDO SOCIAL LIBERAL','PSL'], ['PARTIDO SOCIAL TRABALHISTA','PST'], ['SOCIALISMO E LIBERDADE','PSOL'], ['PARTIDO SOCIALISTA BRASILEIRO','PSB'], ['PARTIDO SOCIALISTA DO BRASIL','PSB'], ['PARTIDO SOCIALISTA DOS TRABALHADORES UNIFICADO','PSTU'], ['PARTIDO TRABALHISTA BRASILEIRO','PTB'], ['PARTIDO TRABALHISTA CRISTAO','PTC'], ['PARTIDO TRABALHISTA NACIONAL','PTN'], ['PARTIDO TRABALHISTA RENOVADOR','PTR'], ['PARTIDO MUNICIPALISTA BRASILEIRO','PMB'], ['PARTIDO NACIONAL DOS APOSENTADOS','PNA'], ['PARTIDO VERDE','PV'], ['PODEMOS','PODEMOS'], ['CONS.NAC. DE JUSTICA','CNJ'], ['CONGRESSO NACIONAL','CN'], ['TRIBUNAL SUPERIOR ELEITORAL','TSE'], ['SOLIDARIEDADE -','SOLIDARIEDADE'], ['PARTIDO NOVO','PARTIDO NOVO'], ['SUPREMO TRIBUNAL FEDERAL','STF'], # ['^',''], ['TRIBUNAL SUPERIOR DO TRABALHO','TST'], ['DIRETOR DA RECEITA FEDERAL','RECEITA FEDERAL'], ['DEPARTAMENTO DA RECEITA FEDERAL','RECEITA FEDERAL'], ['SINDIFISCO NACIONAL','SIND.NAC. AUDITORES FISCAIS DA RECEITA FEDERAL DO BRASIL SINDIFISCO NACIONAL'], ['UNIAO GERAL DOS TRABALHADORES','UNIAO GERAL DOS TRABALHADORES UGT'], ['UNIAO NACIONAL DAS INSTITUICOES DE AUTOGESTAO EM SAUDE','UNIAO NACIONAL DAS INSTITUICOES DE AUTOGESTAO EM SAUDE UNIDAS'], ['AL/SAO PAULO ADI 2476 EM APENSO','AL/SAO PAULO'], ['ARTIGO 19 BRASIL','ASSOC. ARTIGO 19 BRASIL'], ['EDUCAFRO','ASSOC. EDUCACAO E CIDADANIA DE AFRO DESCENDENTES E CARENTES EDUCAFRO'], ['TJ DO RIO DE JANEIRO','TJ DO RIO DE JANEIRO'], ['TJ DE SAO PAULO','TJ DE SAO PAULO'], ['TJ DE SANTA CATARINA','TJ DE SANTA CATARINA'], ['TRT 22REG.','TRT 22REG.'], ['OAB','OAB'], ['ABRAMED','ASSOC. BRASILEIRA DE MEDICINA DIAGNOSTICA ABRAMED'] ] for item in substituir: if item[0] in string: string = item[1] if string.find('ASSOCIACAO') > 0 and string.find('-') < 20: string = string.replace('-','') string = string.replace(' ',' ') string = string.replace(' ',' ') string = string[string.find('ASSOCIACAO'):] + ' - ' + string[:string.find('ASSOCIACAO')] if string.find('UNIAO D') > 0 and string.find('-') < 20: string = string.replace('-','') string = string.replace(' ',' ') string = string.replace(' ',' ') string = string[string.find('UNIAO'):] + ' - ' + string[:string.find('UNIAO')] if string.find('CONFEDERACAO') > 0 and string.find('-') < 20: string = string.replace('-','') string = string.replace(' ',' ') string = string.replace(' ',' ') string = string[string.find('CONFEDERACAO'):] + ' - ' + string[:string.find('CONFEDERACAO')] if string.find('FEDERACAO') > 0 and string.find('-') < 20 and 'CONFEDERACAO' not in string: string = string.replace('-','') string = string.replace(' ',' ') string = string.replace(' ',' ') string = string[string.find('FEDERACAO'):] + ' - ' + string[:string.find('FEDERACAO')] if string.find('CONSELHO') > 0 and string.find('-') < 20: string = string.replace('-','') string = string.replace(' ',' ') string = string.replace(' ',' ') string = string[string.find('CONSELHO'):] + ' - ' + string[:string.find('CONSELHO')] if 'ESTADO DO ' in string[0:12]: string.replace('ESTADO DO ','') if 'ESTADO DE ' in string[0:12]: string.replace('ESTADO DE ','') if 'ESTADO DA ' in string[0:12]: string.replace('ESTADO DA ','') # estados = [[' DO AC','/AC'], # [' DE AL','/AL'], # [' DO AP','/AP'], # [' DO AM','/AM'], # [' DA BA','/BA'], # [' DO CE','/CE'], # [' DO DF','/DF'], # [' DE GO','/GO'], # [' DO MA','/MA'], # [' DO MS','/MS'], # [' DO MT','/MT'], # [' DE MG','/MG'], # [' DA PB','/PB'], # [' DE PE','/PE'], # [' DO PI','/PI'], # [' DO RJ','/RJ'], # [' DO RN','/RN'], # [' DO RS','/RS'], # [' DE RO','/RO'], # [' DE RR','/RR'], # [' DE SC','/SC'], # [' DE SP','/SP'], # [' DO PA','/PA'], # [' DE TO','/TO'], # [' DO TO','/TO'], # [' DO ES','/ES']] # for item in estados: # final = string[-6:0] # if final == item[0]: # string = string.replace(item[0],item[1]) # estados2 = [[' DO AC','/AC'], # [' AL','/AL'], # [' AP','/AP'], # [' AM','/AM'], # [' BA','/BA'], # [' CE','/CE'], # [' DF','/DF'], # [' GO','/GO'], # [' MA','/MA'], # [' MS','/MS'], # [' MT','/MT'], # [' MG','/MG'], # [' PB','/PB'], # [' PE','/PE'], # [' PI','/PI'], # [' RJ','/RJ'], # [' RN','/RN'], # [' RS','/RS'], # [' RO','/RO'], # [' RR','/RR'], # [' SC','/SC'], # [' SP','/SP'], # [' PA','/PA'], # [' TO','/TO'], # [' TO','/TO'], # [' ES','/ES']] # for item in estados2: # final = string[-6:0] # if final == item[0]: # string = string.replace(item[0],item[1]) string = estado_nome_completo(string) trocar = [['ASSEMBLEIA LEGISLATIVA DO ESTADO DE ', 'AL/'], ['ASSEMBLEIA LEGISLATIVA DO ESTADO DA ', 'AL/'], ['ASSEMBLEIA LEGISLATIVA DO ESTADO DO ', 'AL/'], ['ASSEMBLEIA LEGISLATIVA DO ESTADO ', 'AL/'], ['ASSEMBLEIA LEGISLATIVA DO ','AL/'], ['ASSEMBLEIA LEGISLATIVA DE ','AL/'], ['ASSEMBLEIA LEGISLATIVA DA ','AL/'], ['ASSEMBLEIA LEGISLATIVA','AL/'], ['CONSELHO FEDERAL', 'CONS.FED'], ['CONSELHO', 'CONS.'], ['TRIBUNAL REGIONAL ELEITORAL','TRE'], ['MINISTERIO PUBLICO','MP'], ['ASSOCIACAO NACIONAL', 'ASSOC.NAC.'], ['ASSOCIACAO', 'ASSOC.'], ['CONFEDERACAO NACIONAL', 'CONF.NAC.'], ['CONFEDERACAO BRASILEIRA', 'CONF.BRAS.'], ['CONFEDERACAO', 'CONF.'], ['DO ESTADO ',''], ['GOVERNADORA','GOVERNADOR'], ['GOVERNADOR DE ','GOV./ '], ['GOVERNADOR DO ','GOV./ '], ['GOVERNADOR DA ','GOV./ '], ['GOVERNADOR E AL/','GOV./'], ['SECRETARIO','SECRETARIA'], ['(0','('], ['(0','('], ['TRIBUNAL REGIONAL DO TRABALHO','TRT'], ['TRIBUNAL REGIONAL FEDERAL','TRF'], ['TRIBUNAL DE JUSTICA','TJ'], ['PROCURADORA','PROCURADOR'], ['PROCURADOR-GERAL DE ','PG/'], ['PROCURADOR-GERAL DO ','PG/'], ['PROCURADOR-GERAL DA ','PG/'], ['DF/DF','/DF'], ['PRESIDENTA','PRESIDENTE'], ['SANTANA CATARINA','SANTA CATARINA'], ['MINAS DE GERAIS','MINAS GERAIS'], ['A REGIAO','REG.'], ['A. REGIAO','REG.'], ['TRT DA','TRT'], ['TRF DA','TRT'], ['SECRETARIA DE FAZENDA','SEC.FAZ.'], ['SECRETARIA DA FAZENDA','SEC.FAZ.'], ['PRESIDENTE DO','PRES.'], ['PRESIDENTE DA','PRES.'], ['PRESIDENTE ','PRES.'], ['TRIBUNAL DE CONTAS DO','TC/'], ['TRIBUNAL DE CONTAS DE','TC/'], ['TRIBUNAL DE CONTAS DA','TC/'], ['TRIBUNAL DE CONTAS','TC'], ['/ ','/'], [' /','/'], ['//','/'], ['DEFENSORIA PUBLICA','DP'], ['DEFENSOR PUBLICO GERAL', 'DP.GERAL'], ['DEFENSOR PUBLICO-GERAL', 'DP.GERAL'], ['ESTADO/',''], ['ESTADO DE',''], ['JUIZ DO TRABALHO','JUIZ'], ['E OUTROS',''], ['E OUTRO',''], ['E OUTRA',''], ['E OUTRAS',''], ['MINISTRO DE ESTADO','MINISTRO'], ['SECRETARIA DE ESTADO','SECRETARIA'], ['SINDICADO DOS EMPREGADOS','SIND.EMPREG.'], ['DE MATO GROSSO DO SUL','DO MATO GROSSO DO SUL'], ['CONS. DA MAGISTRATURA','CONS.MAGIST.'], ['CONS. ESTADUAL','CONS.ESTAD.'], ['CONS. NACIONAL','CONS.NAC.'], ['CONS. REGIONAL','CONS.REG.'], ['CONS. SUPERIOR','CONS.SUP.'], ['CORREGEDORIAGERAL','CORR.GERAL'], ['CORREG. GERAL','CORR.GERAL'], ['DEFENSOR PUBLICO - GERAL','DP.GERAL'], ['DIRETOR - GERAL','D.G.'], ['FEDERACAO BRASILEIRA','FED.BRAS.'], ['FEDERACAO DAS ASSOCIACOES','FED.ASSOC.'], ['FEDERACAO NACIONAL DOS SERVIDORES','FED.NAC.SERV.'], ['FEDERACAO NACIONAL DOS TRABALHADORES','FED.NAC.TRAB.'], ['FEDERACAO NACIONAL','FED.NAC.'], ['INSTITUTO BRASILEIRO','INST.BRAS.'], ['ORGAO ESPECIAL DO',''], ['SINDICATO NACIONAL DE','SIND.NAC.'], ['SINDICATO NACIONAL DOS','SIND.NAC.'], ['SINDICATO NACIONAL DAS','SIND.NAC.'], ['SINDICATO NACIONAL','SIND.NAC.'], ['MIN. DE ESTADO','MIN.'], ['ORDEM DOS ADVOGADOS DO BRASIL','OAB'], ['PROCURADOR - GERAL','PROC.GERAL'], ['PROCURADOR GERAL DA REPUBLICA','PGR'], ['PROCURADOR GERAL','PROC.GERAL'], ['PROCURADORIA GERAL','PROC.GERAL'], ['SUPERIOR TJ','STJ'], [' AMPCON',''], ['C.MUN. DO MUN.','C.MUN.'], ['DO UNIAO','DA UNIAO'], ['FECOMERCIO PR',''], [' 0AB',''], ['PRES. BRASIL','PRES. REPUBLICA'], ['GOVERNO DE',''], ['GOVERNO DO',''], ['PRES. REPUBLICA','PRESIDENTE DA REPUBLICA'], ['PRESIDENCIA DA REPUBLICA','PRESIDENTE DA REPUBLICA'], ['EM EXERCICIO',''], ['PRES. ',''], ['PATRIOTA PATRI','PARTIDO PATRIOTA'], ['M.D. DA AL','AL'], ['-',''], [' ',' '], [' ',' '], ['FEDERACAO D','FED. D'], ['FEDERACAO INTERESTADUAL','FED.INTEREST.'], ['FEDERACAO NAC ','FED.NAC. '], # ['ASSOC. DAS ','ASSOC. '], # ['ASSOC. DE ','ASSOC. '], # ['ASSOC. DOS ','ASSOC. '], # ['ASSOC. DE','ASSOC.'], # ['.NAC. DAS ','ASSOC. '], # ['.NAC. DE ','ASSOC. '], # ['.NAC. DOS ','ASSOC. '], # ['.NAC. DE','ASSOC.'], # ['.NAC. E ','ASSOC.'], # ['.BRAS. DAS ','ASSOC. '], # ['.BRAS. DE ','ASSOC. '], # ['.BRAS. DOS ','ASSOC. '], # ['.BRAS. DE','ASSOC.'], ['NEOTV ', 'NEO TV'], ['MUNICIPAIS ANMP','MUNICIPAIS ANPM'], ['DIRETORIO NACIONAL DO',''], ['DIRETORIO NACIONAL',''], ['FORCA SINDICAL FS','FORCA SINDICAL'], ['FRENTE NACIONAL','FRENTE.NAC.'], ['/S ','/ '], ['MP FEDERAL','PGR'], ['DP DA UNIAO','DPU'], ['DP DA UNIAO DPU','DPU'], ['DP.GERAL','DP '], [' S A ',' S.A.'], ['FEDERACAO','FED.'], ['CORREGEDORIAREGIONAL','CORREG.REG.'], ['AL./DO ','AL./'], ['D.G. DA A','A'], ['DIRETOR AGENCIA','AGENCIA'], ['DIRETORIA COLEGIADA DA AGENCIA','AGENCIA'], ['SECRETARIA DA RECEITA FEDERAL DO BRASIL', 'RECEITA FEDERAL'], ['SECRETARIA DE SEGURANCA PUBLICA','SSP'], ['TCDO','TC/ '], ['CNPGEDF','CONPEG'], ['DE DIREITO FUNDAMENTAIS','DE DIREITOS FUNDAMENTAIS'], ['CONF NACIONAL','CONF.NAC.'], ['DPU DPU','DPU'] ] for item in trocar: string = string.replace(item[0],item[1]) if string[:2] == 'A ': string = string[2:] if string[:8] == 'ESTADO D': string = string[10:] if string[0:2] == 'O ': string = string[2:] string.strip(',') string.strip() return string def extrair_partes(string): string = remover_acentos(string) partes = string.split('
') # print (partes) n=0 lista_partes = [] for parte in partes[1:]: n = n+1 ordem = n tipo = extrair(parte, 'detalhe-parte">', '<').upper() tipo = tipo.replace('REQTE.(S)','REQTE') tipo = tipo.replace('INTDO.(A/S)','INTDO') tipo = tipo.replace('ADV.(A/S)','ADV') tipo = tipo.replace('AM. CURIAE.','AMICUS') nome = extrair(parte, '"nome-parte">', '<').upper() nome = ajustar_nome(nome) if tipo == 'ADV': if "(" in nome: nome = extrair(nome, '', '(') if tipo == 'RQTE': lista_partes.append([ordem, tipo, nome]) return lista_partes def listar_partes(string, processo): string = remover_acentos(string) partes = string.split('
') lista_partes = [] for parte in partes[1:]: tipo = extrair(parte, 'detalhe-parte">', '<').upper() tipo = tipo.replace('REQTE.(S)','REQTE') tipo = tipo.replace('INTDO.(A/S)','INTDO') tipo = tipo.replace('REQDO.(A/S)','INTDO') tipo = tipo.replace('ADV.(A/S)','ADV') tipo = tipo.replace('AM. CURIAE.','AMICUS') tipo = tipo.replace('PROC.(A/S)(ES)','ADV/PUB') tipo = limpar(tipo) nome = extrair(parte, '"nome-parte">', '<').upper() nome = ajustar_nome(nome) if tipo == 'ADV' or tipo == 'ADV/PUB': if "(" in nome: nome = extrair(nome, '', '(') nome = nome.strip() nome = nome.replace(' ',' ') lista_partes.append([nome, tipo, processo]) return lista_partes def extrair_andamentos(string): string = remover_acentos(string) string = limpar(limpar(string)) andamentos = string.split('
') n= len(andamentos) lista_andamentos = [] for andamento in andamentos[1:]: data = 'NA' nome = 'NA' complemento = 'NA', docs = 'NA' julgador = 'NA' # com esse formato, os andamentos indevidos não são incorporados, pois a classe deles envolve 'andamento indevido', para gerar o taxado n = n-1 ordem = str(n).zfill(4) andamento = andamento.replace('"col-md-9 p-0 "','"col-md-9 p-0"') data = extrair(andamento, '
','
').upper() nome = extrair(andamento, '
','
').upper() complemento = extrair(andamento, '
','
').upper() if complemento == ' ' or complemento == '': complemento = 'NA' docs = extrair(andamento, '"col-md-4 andamento-docs">','
') if docs == ' ' or docs == '': docs = 'NA' if 'href=' in docs: docs = extrair(docs,'href="', '"') julgador = extrair(andamento, 'julgador badge bg-info ">','').upper() #print ([ordem, data, nome, complemento, docs, julgador]) lista_andamentos.append([ordem, data, nome, complemento, docs, julgador]) return lista_andamentos def solicitar_dados_Juris (classe, numero): url = ('http://portal.stf.jus.br/processos/listarProcessos.asp?classe=' + classe +'&numeroProcesso=' + numero) print (url) # Módulo básico de extração string = requests.get(url).text inicio = string.find('Imprimir') return (url + ">>>>> \n" + string[inicio:]) def solicitar_dados_CC (classe, numero): url = ('http://www.stf.jus.br/portal/peticaoInicial/verPeticaoInicial.asp?base=' # url = ('http://www.stf.jus.br/portal/peticaoInicial/verPeticaoInicial.asp?base=' + classe + '&documento=&s1=1&numProcesso=' + numero) print (url) # Módulo básico de extração user_agent = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'} string = requests.get(url, headers = user_agent).text inicio = string.find('processo/verProcessoAndamento.asp?') return (url + ">>>>> \n" + string[inicio:]) url = 'http://www.stf.jus.br/portal/pauta/listarCalendario.asp?data=03/03/2021' html = requests.head def solicitar_dados_mono (classe, numero): url = ('http://stf.jus.br/portal/jurisprudencia/listarJurisprudencia.asp?s1=%28' + classe +'%24%2ESCLA%2E+E+' + numero + '%2ENUME%2E%29+NAO+S%2EPRES%2E&base=baseMonocraticas') print (url) # Módulo básico de extração user_agent = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'} string = requests.get(url, headers = user_agent).text inicio = string.find('Imprimir') return (url + ">>>>> \n" + string[inicio:]) def solicitar_dados_AP (classe, numero): url = ('http://portal.stf.jus.br/processos/listarProcessos.asp?classe=' + classe + '&numeroProcesso=' + numero) print ('url: ' + url) user_agent = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'} string = requests.get(url, headers = user_agent) string.encoding = 'utf-8' htmlfonte = string.text htmlfonte = extrair(htmlfonte, '
', '
') return (url + ">>>>> \n" + htmlfonte) def solicitar_dados (dominio, path, querry): user_agent = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'} html = requests.get(dominio+path+querry, headers = user_agent) html.encoding = 'utf-8' html = html.text return html def get2 (url): # user_agent = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'} html = requests.get(url) # html.encoding = 'utf-8' html = html.text return html def get_utf8 (url): user_agent = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'} html = requests.get(url, headers = user_agent) html.encoding = 'utf-8' html = html.text return html def carregar_arquivo_composto (classe, numero, path): nomedoarquivo = (path + classe + str(0)*(4-len(numero)) + numero + '.html') arquivoaberto = (classe + str(0)*(4-len(numero)) + numero + '.html') print (nomedoarquivo) arquivo = open(nomedoarquivo, 'r', encoding='utf-8') html = arquivo.read() arquivo.close() return arquivoaberto, html def gerador_de_lista (path, classe, numeroinicial, numerofinal): lista = [] for n in range (int(numerofinal) - int(numeroinicial) + 1): numero = numerofinal-n nomedoarquivo = (path + classe + str(0)*(4-len(str(numero))) + str(numero) + '.html') if nomedoarquivo in os.listdir(path): lista.append(nomedoarquivo) return lista def gerar_lista (classe, numeroinicial, numerofinal, path): lista = [] for item in range(int(numerofinal) - int(numeroinicial) +1): nomedoarquivo = (path + classe + ('0')*(4-len(str(item))) + str(item) + '.html') print (nomedoarquivo) lista.append(nomedoarquivo) return (lista) def gerar_nome_arquivo (classe, numero, path): nomedoarquivo = (path + classe + str(0)*(4-len(numero)) + numero + '.html') return (nomedoarquivo) def carregar_arquivo (nomedoarquivo): arquivo = open(nomedoarquivo, 'r', encoding='utf-8') html = arquivo.read() arquivo.close() return html def gravar_dados_no_arquivo (classe, numero, path, dados): nomedoarquivo = (path + classe + str(0)*(4-len(numero)) + numero + '.txt') arquivo = open(nomedoarquivo, 'w', encoding='utf-8') arquivo.write(dados) arquivo.close #repetido def gravar_dados_no_arquivo_nome (nomedoarquivo, dados): arquivo = open(nomedoarquivo, 'w', encoding='utf-8') arquivo.write(dados) arquivo.close def extrair_da_lista (relacao_de_arquivos, path): nomedoarquivo = relacao_de_arquivos.pop() arquivo = open(path + nomedoarquivo, 'r', encoding='utf-8') html = arquivo.read() arquivo.close() return nomedoarquivo, html def limpa_estado(string): estados = [['ACRE', '/AC'], ['ALAGOAS', '/AL'], ['AMAPA', '/AP'], ['AMAZONAS', '/AM'], ['BAHIA', '/BA'], ['CEARA', '/CE'], ['DISTRITO FEDERAL', '/DF'], ['ESPIRITO SANTO', '/ES'], ['GOIAS', '/GO'], ['MARANHAO', '/MA'], ['MATO GROSSO DO SUL', '/MS'], ['MATO GROSSO', '/MT'], ['MINAS GERAIS', '/MG'], ['PARAIBA', '/PB'], ['PARANA', '/PR'], ['PERNAMBUCO', '/PE'], ['PIAUI', '/PI'], ['RIO DE JANEIRO', '/RJ'], ['RIO GRANDE DO NORTE', '/RN'], ['RIO GRANDE DO SUL', '/RS'], ['RONDONIA', '/RO'], ['RORAIMA', '/RR'], ['SANTA CATARINA', '/SC'], ['SAO PAULO', '/SP'], ['SERGIPE', '/SE'], ['PARA', '/PA'], ['TOCANTINS', '/TO'] ] for item in estados: string = string.replace(item[0],item[1]) return string def estado_nome_completo(string): estados = [['ACRE', '/AC'], ['ALAGOAS', '/AL'], ['AMAPA', '/AP'], ['AMAZONAS', '/AM'], ['BAHIA', '/BA'], ['CEARA', '/CE'], ['DISTRITO FEDERAL', '/DF'], ['ESPIRITO SANTO', '/ES'], ['GOIAS', '/GO'], ['MARANHAO', '/MA'], ['MATO GROSSO DO SUL', '/MS'], ['MATO GROSSO', '/MT'], ['MINAS GERAIS', '/MG'], ['PARAIBA', '/PB'], ['PARANA', '/PR'], ['PERNAMBUCO', '/PE'], ['PIAUI', '/PI'], ['RIO DE JANEIRO', '/RJ'], ['RIO GRANDE DO NORTE', '/RN'], ['RIO GRANDE DO SUL', '/RS'], ['RONDONIA', '/RO'], ['RORAIMA', '/RR'], ['SANTA CATARINA', '/SC'], ['SAO PAULO', '/SP'], ['SERGIPE', '/SE'], ['PARA', '/PA'], ['TOCANTINS', '/TO'] ] for item in estados: string = string.replace(item[1],item[0]) return string def siglas(): return ['AC', 'AL', 'AP', 'AM', 'BA', 'CE', 'DF', 'ES', 'GO', 'MA', 'MS', 'MT', 'MG', 'PB', 'PR', 'PE', 'PI', 'RJ', 'RN', 'RS', 'RO', 'RR', 'SC', 'SP', 'SE', 'PA', 'TO'] # funções de limpeza def limpar_numero(numero): numero = numero.replace('','') numero = numero.replace('','') numero = "0"*(4-len(numero))+numero return numero def limpar_classe(string): string = limpar(string) string = string.replace('ACAO DIRETA DE INCONSTITUCIONALIDADE','ADI') string = string.replace('ACAO DIRETA DE INCONSTITUCI0NALIDADE','ADI') string = string.replace('7CAO DIRETA DE INCONSTITUCIONALIDADE','ADI') string = string.replace('01CAO DIRETA DE INCONSTITUCIONALIDADE','ADI') string = string.replace('CAO DIRETA DE INCONSTITUCIONALIDADE','ADI') string = string.replace('PACAO DIRETA DE INCONSTITUCIONALIDADE','ADI') string = string.replace('sACAO DIRETA DE INCONSTITUCIONALIDADE','ADI') string = string.replace('ARGUICAO DE DESCUMPRIMENTO DE PRECEITO FUNDAMENTAL','ADPF') def limpar_cln(string): string = string.upper() string = remover_acentos(string) string = string.replace ('( MED','(MED') string = string.replace ('E(MED','E (MED') string = string.replace ('(LIMINAR)','(MED. LIMINAR)') string = string.replace ('E MED.','E (MED') string = string.replace ('CAUTELAR','LIMINAR') def limpar_decisao (string): string = string.replace('\n','') string = string.replace('\t','') string = string.replace(' ','') string = string.replace(' ',' ') string = string.upper() string = remover_acentos(string) return string def limpar_arquivo(nomedoarquivo): arquivoaberto = open(nomedoarquivo, mode='w', encoding="utf-8", newline='') arquivoaberto.close() def esperar (segundos, ciclos, variavel0): if variavel0%ciclos == 0 and variavel0 != 0: print ('espera ' + str(variavel0)) time.sleep(segundos) #repetido def write_csv_line (nomedoarquivo,dados): if dados != []: arquivoaberto = open(nomedoarquivo, mode='a+', encoding="utf-8", newline='') arquivoaberto_csv = csv.writer(arquivoaberto, delimiter=',', quotechar = '"') arquivoaberto_csv.writerow(dados) arquivoaberto.close() #repetido def write_csv_lines (nomedoarquivo, dados): if dados != []: arquivoaberto = open(nomedoarquivo, mode='a+', encoding="utf-8", newline='') arquivoaberto_csv = csv.writer(arquivoaberto, delimiter=',', quotechar = '"') arquivoaberto_csv.writerows(dados) arquivoaberto.close() def extrai_acordaos_da_string (arquivo_a_extrair, path): # usar duas contra-barras depois do nome if arquivo_a_extrair in os.listdir(path): nome_do_arquivo = str(path+arquivo_a_extrair) acordaos = carregar_arquivo (nome_do_arquivo) # print (arquivo_a_extrair) n_acordaos = extrair(acordaos,'Documentos encontrados: ','') acordaos_publicados = [] adi_decisao = 'NA' acordaos_publicados = [] acordaos_adi = [] acordaos_agr = [] acordaos_emb = [] acordaos_qo = [] acordaos_outros = [] if "Nenhum registro encontrado" in acordaos: decisao_colegiada = [] else: decisao_colegiada = [] for decisoes in range (int(n_acordaos)): acordaos_adi = [] acordaos_emb = [] acordaos_agr = [] acordaos_qo = [] acordaos_outros = [] lista_processos_citados = [] lista_procesoss_citados_com_tema = [] acordao_tipo = 'NA' processo_juris = 'NA' relator_juris = 'NA' data_acordao = 'NA' orgao_julgador_acordao = 'NA' publicacao_acordao = 'NA' ementa = 'NA' decisao_juris = 'NA' legislacao = 'NA' observacao = 'NA' doutrina = 'NA' acordaos = acordaos.replace ('/n/n','/n') acordaos = acordaos.replace ('/t','') processo_juris = extrair(acordaos,'''