From 0a07a86bffc4041c0226c594d76d3595e413cab5 Mon Sep 17 00:00:00 2001 From: maira Date: Wed, 4 Oct 2023 11:34:34 -0300 Subject: [PATCH 1/2] =?UTF-8?q?Corrige=20par=C3=A2metros=20dos=20cookies?= =?UTF-8?q?=20utilizados=20no=20cabe=C3=A7alho=20de=20requisi=C3=A7=C3=A3o?= =?UTF-8?q?=20dos=20ETLs=20do=20SISAB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/impulsoetl/sisab/parametros_requisicao.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/impulsoetl/sisab/parametros_requisicao.py b/src/impulsoetl/sisab/parametros_requisicao.py index cc29992..3854658 100644 --- a/src/impulsoetl/sisab/parametros_requisicao.py +++ b/src/impulsoetl/sisab/parametros_requisicao.py @@ -58,9 +58,9 @@ def head(url): "Sec-Fetch-User": "?1", "Sec-Fetch-Dest": "document", "Accept-Language": "pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7", - "Cookie": "BIGipServerpool_sisab_jboss=" - + cookies[0]["BIGipServerpool_sisab_jboss"] - + ";JSESSIONID=" - + cookies[0]["JSESSIONID"], + "Cookie": "JSESSIONID=" + + cookies[0]["JSESSIONID"] + + ";BIGipServerEI216T7OCd1WTwga/7fQVQ=" + + cookies[0]["BIGipServerEI216T7OCd1WTwga/7fQVQ"], } return headers, vs From bca7d4338562eddd2986f2feb7476a301b9fd486 Mon Sep 17 00:00:00 2001 From: maira Date: Wed, 4 Oct 2023 15:05:45 -0300 Subject: [PATCH 2/2] =?UTF-8?q?Adiciona=20fun=C3=A7=C3=A3o=20na=20extra?= =?UTF-8?q?=C3=A7=C3=A3o=20do=20ETL=20de=20indicadores=20para=20tornar=20a?= =?UTF-8?q?=20contagem=20do=20cabe=C3=A7alho=20do=20arquivo=20csv=20din?= =?UTF-8?q?=C3=A2mica?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sisab/indicadores_municipios/extracao.py | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/impulsoetl/sisab/indicadores_municipios/extracao.py b/src/impulsoetl/sisab/indicadores_municipios/extracao.py index 757b936..587ffb5 100644 --- a/src/impulsoetl/sisab/indicadores_municipios/extracao.py +++ b/src/impulsoetl/sisab/indicadores_municipios/extracao.py @@ -33,6 +33,25 @@ } +def contar_linhas_cabecalho(resposta_requisicao, colunas_alvo): + """Conta o número de linhas que compõe o cabeçalho do arquivo csv""" + + linhas_cabecalho = 0 + linhas = resposta_requisicao.splitlines() + + for linha in linhas: + + if not linha.strip(): + continue + + if all(coluna in linha for coluna in colunas_alvo): + break + + linhas_cabecalho += 1 + + return linhas_cabecalho + + def verifica_colunas(df_extraido: pd.DataFrame) -> int: """Verifica se 'Dataframe' possui 13 colunas como esperado""" return df_extraido.shape[1] @@ -100,10 +119,23 @@ def extrair_indicadores( data=payload, timeout=120, ) + + resposta_requisicao = response.text + colunas_alvo = [ + "Denominador Utilizado", + "Denominador Identificado", + "Denominador Estimado", + "Cadastro", + "Base Externa", + ] + numero_linhas_cabecalho = contar_linhas_cabecalho( + resposta_requisicao, colunas_alvo + ) + df_extraido = pd.read_csv( StringIO(response.text), delimiter=";", - header=10, + header=numero_linhas_cabecalho, encoding="ISO-8859-1", ) df_extraido = df_extraido.drop( @@ -118,4 +150,3 @@ def extrair_indicadores( ) return df_extraido -