You are on page 1of 40

UNIVERSIDADE FEDERAL DE PERNAMBUCO

CENTRO DE INFORMÁTICA

Ferramenta para monitoramento de gastos e iniciativas da câmara de


vereadores do Recife

Aluno: Danilo Matheus de Oliveira Pedrosa


Orientador: Vinicius Cardoso Garcia

Recife, julho de 2019


Danilo Matheus de Oliveira Pedrosa

Ferramenta para monitoramento de gastos e iniciativas da câmara de


vereadores do Recife

Trabalho de Conclusão de Curso


apresentado ao Centro de Informática,
como parte dos requisitos necessários à
obtenção do grau de Bacharel de Sistemas
de Informação.

Orientador: Prof. Dr. Vinicius Cardoso Garcia

Recife
2019
Danilo Matheus de Oliveira Pedrosa

Ferramenta para monitoramento de gastos e iniciativas da câmara de


vereadores do Recife

Trabalho de Conclusão de Curso


apresentado ao Centro de Informática,
como parte dos requisitos necessários à
obtenção do grau de Bacharel de Sistemas
de Informação.

Prof. Dr. Vinicius Cardoso Garcia


Orientador

Profa. Dra Bernadette Farias Lóscio


Avaliadora

Recife
2019
Resumo

Devido aos grandes avanços tecnológicos que ocorreram em nossa sociedade, houveram
mudanças no modo como os governos e os cidadãos se relacionam as informações públicas.
Cada vez mais cresce o número de governos que decidem expor seus dados em razão de mais
transparência, além dos benefícios econômicos e sociais provenientes desta prática, abrindo
uma enorme gama de possibilidades para a aplicação destes dados, tanto sendo utilizado por
pessoas, quanto por empresas. Tendo esse contexto em vista, este trabalho propõe implementar
um serviço que servirá para monitorar os gastos e iniciativas da câmara dos vereadores da cidade
do Recife, disponibilizando os mesmos por meio de dashboards, com a justificativa de facilitar
a busca por informações sobre os parlamentares eleitos e engajar mais os cidadãos ao meio
político.
Palavras-chave: Dados abertos governamentais, node.js, web scraping
Abstract

Due to the great technological advances that have taken place in our society, there have
been changes in the way governments and citizens relate to public information. There is an increasing
number of governments that decide to expose their data for more transparency, in addition to the
economic and social benefits of this practice, opening up a huge range of possibilities for the
application of this data, both being used by individuals and by companies. With this context in view,
this work proposes to implement a service that will serve to monitor the expenditures and initiatives
of the city council of the city of Recife, making them available through dashboards, with the
justification of facilitating the search for information about elected representatives and to engage
citizens more in the political environment.
Keywords: open government data, node.js, web scraping
AGRADECIMENTOS

Agradeço a todos que me apoiaram até


aqui, sempre sonhei em um dia estar em
uma faculdade, e para meu regozijo,
consegui ingressar no curso que aspirava.

Agradeço a minha namorada Eva por estar


do meu lado, principalmente neste
momento.

Agradeço ao professor Vinicius Garcia


por aceitar seu meu orientador e sempre
estar disposto a me auxiliar.

Em especial, agradeço a meus pais, David


e Odaize, por toda dedicação em prover
uma educação de qualidade para mim, e
por me instigarem sempre a acreditar nos
meus sonhos.
“Imagination is more important
than knowledge. Knowledge is limited.
Imagination encircles the world.
(Albert Einstein).
LISTA DE ABREVIATURAS

● API – Application Programming Interface


● SQL - Structured Query Language
● XLS – Microsoft Excel file format
● TXT – Text file format
● CSV - Comma-separated values
● HTML - HyperText Markup Language
SUMÁRIO
1. INTRODUÇÃO ...................................................................................................... 1

1.1 Contexto ............................................................................................ 1

1.2 Cenário .............................................................................................. 1

1.3 Problema ........................................................................................... 1

1.4 Objetivo ............................................................................................ 2

1.5 Relevância ......................................................................................... 2

1.6 Estrutura do Relatório ......................................................................... 2

2. DADOS ABERTOS ............................................................................................... 4

2.1 Definição e propósito .......................................................................... 4

2.1 Dados Abertos Governamentais ........................................................... 4

2.1.1 Utilização de dados Abertos Governamentais ...................................... 4

2.2 Portal da transparência da prefeitura do Recife....................................... 6

2.2.1 Disposição dos dados ....................................................................... 6

2.2.1.1 Verbas indenizatórias..................................................................... 8

2.2.1.2 Remuneração dos servidores......................................................... 10

2.2.1.3 Proposições ................................................................................ 11

2.2.1.3 Sessões Plenárias......................................................................... 12

3. WEB SCRAPING ................................................................................................ 14

3.1 Definição e propósito ........................................................................ 14

4. CONCEPÇÃO ...................................................................................................... 15

4.1 Introdução........................................................................................ 15

4.2 Requisitos ........................................................................................ 15

4.3 Especificações .................................................................................. 15

4.4 Ferramentas ..................................................................................... 15

4.4.1 Node.js ......................................................................................... 16

4.4.2 Cheerio ......................................................................................... 16


4.4.3 PostgreSQL ................................................................................... 17

4.4.4 Metabase ....................................................................................... 18

5. IMPLEMENTAÇÃO ........................................................................................... 19

5.1 Introdução........................................................................................ 19

5.2 Web Scraper .................................................................................... 19

5.2.1 Modelo do banco de dados .............................................................. 19

5.2.2 Scripts de captura ........................................................................... 20

5.2.2.1 Extração por meio das páginas HTML ........................................... 20

5.2.2.1.1 Fluxo de extração ..................................................................... 21

5.2.2.1 Extração por meio de planilhas ..................................................... 22

5.2.2.2.1 Fluxo de extração ..................................................................... 22

5.2.3 Rotas ............................................................................................ 22

5.3 Visualização dos dados ..................................................................... 23

5.4 Licença ............................................................................................ 25

6. CONCLUSÃO E TRABALHOS FUTUROS ...................................................... 26

7. REFERÊNCIAS BIBLIOGRÁFICAS ................................................................. 27

8. GUIA DO USUÁRIO ........................................................................................... 29


1. INTRODUÇÃO

1.1 Contexto

Com o intuito de incentivar o envolvimento dos eleitores com o setor


governamental, em 2009 nasce o Open Data [2], iniciativa que visa a disponibilização de
informações na web de forma aberta, e também a cobrança das informações públicas do
governo. Além de oferecerem várias informações sobre o rumo do governo abordado, esses
dados podem ser acessados e utilizados abertamente por qualquer pessoa, que também tem a
liberdade de adaptar os dados informados as suas necessidades, utilizando ferramentas de
software.

1.2 Cenário

Neste contexto, em 18 de novembro de 2011 é aprovada no Brasil a Lei Federal n°


12.527 [3], que regulamenta o direito constitucional de acesso às informações públicas, sem
a necessidade de apresentar algum motivo especial.
Em conseguinte, em março de 2013, é lançado o Portal da Transparência da
Prefeitura do Recife [4]. Com o objetivo de facilitar o acesso a alguns dados acerca de
transações públicas da prefeitura do Recife, o portal permite obter informações sobre as
receitas, despesas, convênios, licitações, contratos, servidores, demonstrativos contábeis,
planejamento orçamentário, demonstrativos fiscais e dados da gestão, assim como os salários
de todos os servidores municipais.

1.3 Problema

Ainda que disponíveis, a maneira que esses dados estão postos inviabiliza
demasiadamente o aproveitamento do público. Posto que a maioria das informações
relevantes, estão dispostas de forma segmentada, em alguns casos ainda, apenas apresentadas
em formatos de arquivo compactados ou planilhas, também excessivamente segmentadas,
fazendo-se necessário que a pessoa que desejar utilizar esses dados se dê ao trabalho de filtrar
e baixar arquivos e comparar uns com os outros.

1
Nesse caso, a questão da abertura dessas informações ao público perde o significado,
já que tantos dados que custaram a ser manuseados, apenas expõe números que não agregam
valor por si só.

1.4 Objetivo

Através da captura, extração e exibição de dados disponibilizados pela prefeitura, este


trabalho tem por objetivo viabilizar o acompanhamento dos gastos e iniciativas da câmara de
vereadores do Recife para a população.
Isto posto, a solução facilitará a coleta de informações sobre o tema, motivando a
população a utilizá-los. Munindo o cidadão de informações confiáveis para que ele possa
identificar e contestar possíveis inconsistências ou gastos supérfluos, ou até mesmo
comprovar promessas de campanha dos servidores públicos da cidade, além de poder servir
de base para projetos futuros com a adição de outras cidades e/ou regiões.

1.5 Relevância

Considerando a importância do engajamento e participação política dos cidadãos em


função do bem-estar social, e mais além, o retorno da prestação de contas da utilização dos
tributos pagos em forma de impostos por cada indivíduo, refletem na justificativa deste
trabalho.
Através de uma ferramenta que possa facilitar o manuseio dos dados fornecidos -
como a proposta por este trabalho, será possível realizar uma análise mais metódica e agregar
valor aos usuários.

1.6 Estrutura do Relatório

Os capítulos seguintes estão dispostos da seguinte forma:


● Dados Abertos: Este tópico conterá a base necessária para o entendimento do
trabalho. Nele será possível compreender a importância e o uso dos dados abertos, e
como os dados capturados estão disponibilizados;
● Web Scraping: Neste tópico o leitor terá um panorama geral sobre esta técnica;
2
● Concepção: Aqui o leitor poderá observar a descrição das ferramentas utilizadas, dos
requisitos e das especificações.
● Implementação: Neste tópico o leitor pode observar explicação a respeito da
implementação e funcionamento da aplicação.
● Conclusão e Trabalhos Futuros: Por fim, serão apresentados desfechos a título de
finalização do documento, objetivando ressaltar algumas ideias. Assim como, citar
possíveis trabalhos futuros a partir do que foi apresentado.

3
2. DADOS ABERTOS

2.1 Definição e propósito

Utilizando como referência a definição proposta pela Open Knowledge Foundation,


“Dados abertos são dados que podem ser livremente usados, reutilizados e redistribuídos
por qualquer pessoa - sujeitos, no máximo, à exigência de atribuição da fonte e
compartilhamento pelas mesmas regras.” [3].
Estes tipos de dados podem ser acessados e utilizados por qualquer pessoa, seja
jurídica ou física. No cerne de seus fundamentos, está a ideia de que ao se compartilhar
abertamente um dado, seu valor e seu uso são potencializados já que permitem o
desenvolvimento de novas realizações, especialmente quando relacionados com outros
insumos. Seu surgimento contribui enormemente para a popularização das novas expertises
voltadas a mineração, análise e estruturação de dados.

2.1 Dados Abertos Governamentais

Uma das possíveis áreas de aplicação do paradigma de dados abertos é a área


governamental. Visto que, os chamados dados abertos governamentais, são “uma
metodologia para a publicação de dados do governo em formatos reutilizáveis, visando o
aumento da transparência e maior participação política por parte do cidadão, além de gerar
diversas aplicações desenvolvidas colaborativamente pela sociedade” [9].
Esta metodologia para com os dados públicos, traz diversas vantagens para o
relacionamento entre o estado e os cidadãos - já que estes terão conjuntos de dados confiáveis
disponíveis para análise e cobrança de prestação de contas do governo.
Dessa forma, entre as vantagens de disponibilizar os dados da administração pública, como
em encontrado em [7], pode-se destacar o setor econômico, no sentido de evitar um pedido
de acesso à informação ou evitar ações duplicadas por desconhecimento de departamento
diferente, entre tantos outros.

2.1.1 Utilização de dados Abertos Governamentais

4
Como abordado no tópico anterior, dados abertos governamentais são grandes
possíveis insumos para o desenvolvimento de ferramentas de valor para a sociedade.
Um exemplo disto, é um projeto iniciado em 2013 durante um hackathon promovido
pela câmara dos deputados, com o objetivo de melhorar a transparência e a participação em
questões públicas no país. O site Meu Congresso Nacional [17], captura os dados referentes
aos então senadores e deputados federais do Brasil e os disponibiliza em sua plataforma. É
possível observar dados acerca dos parlamentares e seus respectivos gastos/dados
legislativos.

Figura 1 – Página do portal, exibindo os dados referentes a um então deputado federal.


(Fonte: Site do Meu congresso nacional)

Outro exemplo encontrado é a aplicação Cidadão Recifense, idealizada durante um


desafio proposto pela prefeitura do Recife em 2014 [18], visando melhorar a vida da
população da cidade, e utilizando informações disponibilizadas pela prefeitura da mesma, o
site exibe várias informações referentes a administração pública, como orçamentos, e
serviços de interesse da população, como calendário de vacinação, informações sobre
turismo, coleta seletiva, e etc.

5
Figura 2 – Página do site cidadão recifense, exibindo o orçamento anual da educação da prefeitura do Recife.
(Fonte: Site cidadão recifense)

2.2 Portal da transparência da prefeitura do Recife

O portal da transparência da prefeitura do Recife [5] disponibiliza vários registros


referentes a informações de sua administração e de seus servidores públicos, para os fins
deste trabalho, a seção da câmara municipal do Recife foi o alvo de captura dos dados deste
trabalho.

2.2.1 Disposição dos dados

Estudar e conhecer bem a disposição da base de dados a ser capturada é o primeiro


passo para a captação de dados.
Nessa fase é essencial que se encontre a maioria dos padrões que serão retornados a
fim de poupar energia na tentativa de pressupor durante a implementação e execução da

6
captura. Dessa forma, conhecendo a organização desses dados é possível definir qual será a
melhor maneira de extraí-los.

Figura 3 – Página inicial do portal da transparência da câmara municipal do Recife.


(Fonte: Portal da transparência do Recife)

Neste portal verifica-se os seguintes dados financeiros e administrativos:


● Receitas;
● Despesas;
● Demonstrativos contábeis;
● Relatórios de gestão fiscal;
● Prestação de contas;
● Verbas indenizatórias;
● Remuneração dos servidores;
● Licitações e contratos;
● Dados legislativos;

Além disso, existe outro endereço com informações sobre a prefeitura, neste caso,
especificamente sobre os vereadores da câmara do Recife e suas iniciativas, este sistema
encontra-se com o nome de “Sistema de processo legislativo” [15].

7
Figura 4 – Página inicial do sistema de processo legislativo da câmara municipal do Recife.
(Fonte: Sistema do Processo legislativo da câmara municipal do Recife)

Neste sistema podemos obter os seguintes dados sobre a câmara do Recife:

● Mesa Diretora;
● Comissões;
● Parlamentares;
● Pauta da Sessão;
● Sessão Plenária;
● Matérias legislativas;
● Normas jurídicas;
● Relatórios.

É importante destacar que como o escopo do projeto limite-se aos dados dos
vereadores, apenas as informações que se relacionam com o tema foram capturadas.
Os seguintes tópicos dizem respeito às informações relevantes e como se
encontravam.

2.2.1.1 Verbas indenizatórias

Durante seu mandato, todo parlamentar pertencente a câmara municipal do Recife


tem direito ao ressarcimento de determinados gastos cometidos pelo mesmo. Esses
8
ressarcimentos dizem respeito aos gastos relacionados à realização de sua função. Isto está
previsto segundo a lei 17.159/2005 [14].

Figura 5 – Página onde se encontram as informações das verbas indenizatórias.


(Fonte: Portal da transparência do Recife)

Os gastos são segmentados por mês ou ano, e a única forma de visualizar as


informações é baixando a planilha referente ao mês/ano desejado. Abrindo a planilha, os
dados são demonstrados com histórico do ano mês a mês, até o mês selecionado.

9
Figura 6 – Discriminação das verbas indenizatórias de um parlamentar.

2.2.1.2 Remuneração dos servidores

No portal da transparência é possível visualizar dados que contém valores dos salários
mensais de servidores públicos de várias categorias, inclusive dos vereadores.
Para observar tais dados, previamente é preciso filtrar pelo ano/mês desejado e o
cargo ou categoria do servidor. É possível fazer o download dessas informações em diversos
formatos de arquivo, incluindo CSV, XLS e TXT.

Figura 7 – Discriminação da remuneração dos vereadores em janeiro de 2019.


(Fonte: Portal da transparência do Recife)

10
2.2.1.3 Proposições

Estão disponíveis também informações sobre as proposições de iniciativas dos


parlamentares no sistema do processo legislativo.

Figura 8 – Discriminação da remuneração dos vereadores em janeiro de 2019.


(Fonte: Portal da transparência do Recife)

Estas proposições estão agrupadas por tipo e ao escolher uma categoria de proposição
a ser exibida, são listadas e é possível visualizar informações detalhadas acerca de uma
proposição específica quando selecionada.

Figura 9 – Listagem das proposições de projeto legislativo de um parlamentar.


(Fonte: Portal da transparência do Recife)

11
Figura 10 – Informações detalhadas sobre um projeto de decreto legislativo.
(Fonte: Portal da transparência do Recife)

2.2.1.3 Sessões Plenárias

Na Câmara Municipal a Sessão Plenária reúne os vereadores da cidade. “É a


instância municipal de discussão e deliberação do Poder Legislativo sobre a elaboração de
leis, a fiscalização dos atos da Prefeitura e ainda sobre as manifestações das diversas
opiniões e posições partidárias e da sociedade” [16].
No portal de Processo Legislativo é possível verificar informações detalhadas sobre
as sessões plenárias. Estão listadas informações como: presença dos parlamentares, número
da sessão, áudio e vídeo da sessão e data de abertura e encerramento.

12
Figura 11 – Informações detalhadas sobre uma sessão plenária
(Fonte: Sistema do Processo legislativo da câmara municipal do Recife)

13
3. WEB SCRAPING

3.1 Definição e propósito

Utilizando [13] como referência, podemos afirmar que web scraping consiste na
“extração de dados não estruturados dos sites e transformação desses dados em dados
estruturados que podem ser armazenados e analisados”.
Ou seja, o propósito de se utilizar esta técnica em um endereço web, é o de adquirir
os dados ali disponíveis, armazená-los e analisá-los em outro ambiente, seja uma planilha ou
um banco de dados.
Esta prática é utilizada nas mais diversas atividades, como: comparação de preços
online, captura de informações pessoais, web mash-up (união de dados de diversas fontes
distintas), etc.
Para se extrair os dados encontrados em uma página web pode-se utilizar um grande
número de técnicas, que variam desde “copiar e colar” executado manualmente, até a
construção de um software que automatize este processo [13, 15].

14
4. CONCEPÇÃO

4.1 Introdução

Nesta fase, foram realizadas diversas análises quanto às tecnologias que seriam
utilizadas na implementação, as especificações do software e as ferramentas que
possibilitaram o seu desenvolvimento.

4.2 Requisitos

Durante a etapa de concepção do software foram analisadas as principais variáveis


envolvidas no problema, e a partir disso foram levantados os seguintes requisitos:
1. Ater-se a atual legislatura, evitando sobrecarga dos servidores da prefeitura, e
servir de base para próxima eleição;
2. Utilizar ferramenta de visualização de dados, para demonstrar os dados
obtidos por meio da captura no portal;
3. API implementada em node.js, por possuir uma alta produtividade e
possibilitar a captura de dados de forma eficiente;
4. Ser código aberto, para viabilizar a adição de análises de novas regiões ou
facilitar a criação de projetos semelhantes.

4.3 Especificações

Foi especificado que o software deverá capturar as informações sobre gastos e


propostas dos vereadores da Câmara do Recife, e após isso, realizar a persistência das
informações encontradas. Também foi requerido que se utilizasse uma ferramenta de
visualização de dados, para que seja possível observar as informações disponíveis por meio
de dashboards, visando agregar conhecimento a quem o utilizar sobre os atuais
parlamentares, suas proposições e seus gastos.

4.4 Ferramentas

15
Para execução do projeto foram escolhidas algumas ferramentas e tecnologias, de
modo a obter êxito na extração dos dados e na visualização dos mesmos. A seguir serão
apresentadas as ferramentas utilizadas acompanhadas das respectivas justificativas para a
escolha das mesmas.

4.4.1 Node.js

Criado em 2009, o node.js permite executar a linguagem Javascript sem a necessidade


de utilizar um navegador. Funciona similarmente a outras linguagens de script interpretadas,
como Python e Perl [12].
Sua arquitetura baseia-se em eventos assíncronos proporcionando sua leveza e
eficiência, pois, ao se requisitar uma tarefa a um servidor node.js, o mesmo não esperará o
término desta para dar início ao recebimento de uma nova.

Figura 12 – Criação de uma rota com retorno “Hello World” em node.js.


(Fonte: Página oficial do Node.js)

4.4.2 Cheerio

Para capturar as informações encontradas em páginas HTML, se faz necessário uma


ferramenta que possa facilitar a extração das informações contidas nas mesmas. Este processo
de captura, que poderia durar horas sendo feito manualmente, ou ser construído com mais
complexidade, por meio de expressões regulares, pode ser feito de maneira simplificada,

16
acessando os seletores HTML de cada elemento da página, esta biblioteca construída em
Javascript, possibilita a captura das informações desta forma. Com isso, pode-se escolher
qualquer elemento do HTML e a partir da seleção deste elemento, extrair a informação ali
presente.

Figura 13 – Exemplo de captura de seletor HTML com cheerio.


(Fonte: Página no GitHub do cheerio)

4.4.3 PostgreSQL

Após a captura das informações, foi necessário utilizar uma ferramenta para
armazenar os dados obtidos, uma abordagem não relacional foi cogitada, porém, devido a
compatibilidade das ferramentas de visualização de dados serem maiores com bancos de
dados relacionais, principalmente as open source, o PostgreSQL foi escolhido.
Sistema gerenciador de banco de dados extremamente popular, e com disposição de
uma variedade de funcionalidades para estender a linguagem SQL, o PostgreSQL permite a
criação de bases de dados relacionais de forma eficiente, o que foi essencial para o projeto.

Figura 14 – Exemplo de comandos SQL aceitos pelo PostgreSQL.


(Fonte: Página oficial do PostgreSQL)

17
4.4.4 Metabase

Para a realizar a exibição das informações apuradas, foi requerido a construção de


dashboards que as ilustrassem.
A ferramenta Metabase foi escolhida pela facilidade de uso e pela velocidade em
conectar um banco de dados compatível, além de demonstrar os resultados obtidos em
dashboards bem ilustrados.

Figura 15 – Dashboard construído com Metabase.

18
5. IMPLEMENTAÇÃO

5.1 Introdução

Peça primordial no projeto, o scraper foi construído com as tecnologias já


mencionadas no capítulo anterior, primeiramente, houve a modelagem do bando de dados,
para prover toda a estrutura necessária para a persistência dos dados obtidos, após isso, a
construção dos scripts de captura em si, e por último a construção dos dashboards, tudo isto
será posto nos seguintes tópicos.

5.2 Web Scraper

5.2.1 Modelo do banco de dados

Com o intuito de persistir os dados em uma base relacional, foi necessário estruturar
esta solução. Como abordado anteriormente, a solução final contempla o uso de um banco
de dados relacional, com este fim, foram criadas tabelas referentes a cada conjunto de dados
a ser capturado.

Figura 16 – Esquema de relacionamentos do banco de dados.


19
5.2.2 Scripts de captura

Pode-se dividir os métodos de captura de informações deste scraper em dois grupos,


a depender da origem dos dados, os scripts que se baseiam na captura das informações por
meio da extração dos dados nas páginas HTML, e os que extraem os dados de planilhas.
No primeiro grupo, encontram-se os scripts de captura das informações sobre os
vereadores, as sessões plenárias e as propostas dos parlamentares. Já no segundo estão
dispostas as informações acerca dos salários e das verbas indenizatórias.

5.2.2.1 Extração por meio das páginas HTML

Neste grupo, a dificuldade encontrada tende a ser maior, pois, pode-se fazer
necessário acessar um número n de páginas distintas para obter informações sobre um único
parlamentar, o que pode vir a sobrecarregar o servidor.
As primeiras capturas foram dadas dos vereadores da atual legislatura. Não houveram
grandes dificuldades para realização da captura, posto que, correspondem a uma pequena
quantidade - em torno de 40 registros.
Sendo de utilidade para avaliar-se no parlamentar, principalmente, a quantidade de
ausências deste em uma destas sessões, as sessões plenárias foram capturadas também, sem
grandes obstáculos, desta vez a massa de dados era um pouco maior.
A captura das informações sobre as propostas referentes a cada um dos parlamentares
se mostrou a mais difícil entre todas. Devido a sua grande massa de dados (em torno de
23.000 registros entre os anos de 2017 e 2019), não foi possível extrair informações que
discriminassem cada uma destas propostas, pois as requisições sobrecarregavam o servidor
da prefeitura. Devido a estes empecilhos, foram capturas apenas informações referentes ao
ano, categoria, autor e a descrição da proposta

20
Figura 17 – Script de captura dos dados acerta dos parlamentares

5.2.2.1.1 Fluxo de extração

O fluxo para extrair informações encontradas desta forma, é em linhas gerais o


seguinte:

Figura 18 – Fluxo de script extraindo dados de páginas HTML

21
5.2.2.1 Extração por meio de planilhas

A captura das informações sobre as verbas indenizatórias e os salários ocorreu de


forma diferente da captura abordada anteriormente. Desta vez, os dados se encontravam em
planilhas, neste caso, pela fonte dos dados ser distinta, o fluxo para captura das informações
também mudou.
Neste grupo, foi necessário ler as planilhas referentes a cada período de tempo, e
depois armazenar os dados encontrados. Cabe-se ressaltar que os dados referentes aos
salários também se encontravam em páginas HTML, porém, devido a maior complexidade
da extração por meio da página, foi alterado o método de captura inicial.
As planilhas encontram-se formatadas de maneira distinta nos dois casos, enquanto
os dados dos salários referenciam apenas um mês de um determinado ano, os dados das
verbas trazem informações a respeito de um ano inteiro, reduzindo o número de arquivos a
serem baixados.

5.2.2.2.1 Fluxo de extração

O fluxo para extrair informações encontradas desta forma, é em linhas gerais o


seguinte:

Figura 19 – Fluxo de script extraindo dados de planilhas

5.2.3 Rotas

Para execução do scraper, foi criada uma API com cinco rotas disponíveis, cada uma,
referente a um conjunto de dados sobre o parlamentar e sua legislatura. A requisição feita
para estes métodos é do tipo GET e não recebe parâmetros de entrada. As rotas estão
dispostas da seguinte maneira:
22
1. /scraper/councils (Dados referentes aos vereadores);
2. /scraper/indemnities (Dados referentes às verbas indenizatórias);
3./scraper/remunerations (Dados referentes aos salários dos parlamentares);
4. /scraper/plenary-sessions (Dados referentes às sessões plenárias);
5. /scraper/proposes (Dados referentes às proposições de cada parlamentar);

Cada um destes métodos retornam uma mensagem de sucesso, ou de erro, dependendo do


êxito em capturar as informações desejadas.

Figura 20 - Mensagem ao se requisitar uma rota com sucesso

5.3 Visualização dos dados

Após todo o processo de captura, estruturação dos dados e persistência dos dados, a
etapa final foi iniciada, a criação de dashboards para visualizar os resultados obtidos.
A ferramenta Metabase, de natureza open source, proveu todos os meios necessários
para a construção de dashboards bem construídos e interativos. A construção destes pode ser
feita por meio da escrita de um script SQL, ou por via da criação de uma “pergunta”, gerando
SQL por meio da seleção de filtros e opções, viabilizando a criação de dashboards por
pessoas que não possuem proficiência técnica. O grande ponto negativo se dá pela
impossibilidade de se exportar as configurações realizadas em uma instancia do projeto,
sendo necessário configurar tudo novamente, caso perca acesso ou as configurações deste,
sendo assim, todos os scripts SQL se encontram no repositório, junto ao projeto, para permitir
a configuração de um dashboard semelhante.
Foram construídas duas páginas com dashboards, uma destas páginas referente aos
parlamentares de maneira geral, e a outra com os detalhes sobre um parlamentar em
especifico, podendo este ser alterado. Estas visualizações agregam bastante conhecimento
não só sobre os atuais parlamentares, pois é possível verificar informações agrupadas de

23
modo a gerar inferências sobre seu empenho na função e seus gastos, como sobre a câmara
em si.

Figura 21 – Visualização de métricas agrupadas por partido

Figura 22 – Visualização de remunerações e verbas indenizatórias

24
Figura 23 – Visualização detalhada acerca de um parlamentar

5.4 Licença

Pelo objetivo do projeto ser contribuir com a comunidade open source, a licença
MIT [19], foi escolhida, inferindo permissão para uso e modificação de qualquer parte da
aplicação.

25
6. CONCLUSÃO E TRABALHOS FUTUROS

Através deste projeto foi possível construir uma web scraper que captura dados da
Câmara de vereadores do Recife e após o agrupamento e filtragem desses dados, demonstra
informações que agregam valor aos usuários através de dashboards interativos [1].
Dessa forma, o projeto cumpre a missão de engajar a busca por informações
governamentais por parte dos eleitores recifenses - já que estes terão conjuntos de dados
confiáveis disponíveis para análise e cobrança de prestação de contas do governo, poupando
tempo de busca e assimilação, e facilitando o acesso.
Apesar dos dashboards viabilizarem essas informações, ainda há muito o que
contribuir com essa causa. Tecnologias como machine learning e big data podem ser
aplicadas a trabalhos como este a fim de tratar esses dados e organizá-los com o intuito de
obter informações cada vez mais diretas e bem estruturadas. Assim como, conforme fontes
confiáveis oficiais forem sendo disponibilizadas, a expansão deste projeto para outras regiões
do país é viabilizada, como ferramenta de conhecimento que possibilita a cobrança de
prestação de contas da administração dos tributos pagos pelos cidadãos.

26
7. REFERÊNCIAS BIBLIOGRÁFICAS

[1] PEDROSA, D. M. de O. dmop/council-expenses. 2019. Disponível em:


<https://github.com/dmop/council-expenses/>, acesso em: 13 mar. 2019.
[2] OPEN KNOWLEDGE FOUNDATION.2019. Disponível em: <https://okfn.org/ >,
acesso em: 13 mar. 2019.
[3] GOVERNO FEDERAL. A LEI DE ACESSO À INFORMAÇÃO. Disponível em :
<http://www.acessoainformacao.gov.br/assuntos/conheca-seu-direito/a-lei-de-acesso-a-
informacao/ >, acesso em: 13 mar. 2019.
[4] NE10. PREFEITURA DO RECIFE LANÇA PORTAL DA TRANSPARÊNCIA.
Disponível em: <https://blogs.ne10.uol.com.br/jamildo/2013/04/03/prefeitura-do-recife-
lanca-portal-da-transparencia-para-populacao-monitorar-a-gestao/ >, acesso em: 13 mar.
2019.
[5] PREFEITURA DO RECIFE. PORTAL DA TRANSPARÊNCIA. Disponível em:
<http://www.recife.pe.leg.br/portal-da-transparencia/>, acesso em: 18 de junho de 2019.
[6] OPEN DATA HANDBOOK. WHAT IS OPEN DATA? Disponível em:
<http://opendatahandbook.org/guide/pt_BR/what-is-open-data/>, acesso em: 17 junho. 2019
[7] GOVERNO DO BRASIL. VANTAGENS DA PUBLICAÇÃO DE DADOS
ABERTOS. 2019. Disponível em: <https://kit.dados.gov.br/vantagens-dados-abertos/ >.
[8] A. SOARES, FÁBIO de. 2008. Mineração de Textos na Coleta Inteligente de Dados
na Web.
[9] GOVERNO DO BRASIL. DADOS ABERTOS GOVERNAMENTAIS. Disponível
em: <https://www.governodigital.gov.br/transformacao/cidadania/dados-abertos/dados-
abertos-governamentais/ > , acesso em: 18 de junho de 2019.
[10] SALERNO, JOHN J.; BOULWARE, DOUGLAS M. 2003.Method and apparatus for
improved web scraping.
[11] SALERNO, JOHN J.; BOULWARE, DOUGLAS M. 2012. Exploiting web scraping
in a collaborative filtering-based approach to web advertising.
[12] KALLIO, ALEKSI. 2015. Automated web store product scraping using node.js.
[13] SIRISURIYA, SCM de S.2015. A Comparative Study on Web Scraping.
[14] JUSBRASIL. LEI 17159/05 | LEI Nº 17159 DE 21 DE DEZEMBRO DE 2005.
Disponível em: <https://cm-recife.jusbrasil.com.br/legislacao/260457/lei-17159-05/ >,
acesso em: 18 de junho de 2019.

27
[15] CÂMARA MUNICIPAL DO RECIFE. SISTEMA DE PROCESSO
LEGISLATIVO. 2019. Disponível em: <http://sapl.recife.pe.leg.br/default_index_html/>.
[16] PREFEITURA DE SÃO PAULO. SESSÃO PLENÁRIA. 2019.. Disponível em:
<http://www.saopaulo.sp.leg.br/atividade-legislativa/sessao-plenaria/> , acesso em: 18 de
junho de 2019.
[17] BRITO, K.; S. NETO, Misael dos; COSTA, Marcos A. da S.; GARCIA, Vinicius
Cardoso; MEIRA, Silvio R. de L.; 2014.Using Parliamentary Brazilian Open Data to
Improve Transparency and Public Participation in Brazil
[18] PREFEITURA DO RECIFE. CONCURSO CIDADÃO INTELIGENTE. Disponível
em: <http://www2.recife.pe.gov.br/noticias/01/04/2014/concurso-cidadao-inteligenterec-
anuncia-os-vencedores/>, acesso em: 17 junho. 2019
[19] INITIATIVE, O. S. The MIT License (MIT). Disponível em:
<https://opensource.org/licenses/MIT/>, acesso em: 17 junho. 2019

28
8. GUIA DO USUÁRIO

This project seeks to implement a web scraper for the current councils of Recife. The
implementation is based on this article. The final purpose of this project is to create a
simplest way of observing public data reported by the local government. This project is also
a part of a graduation work, at the Centro de Informática (CIn) - Universidade Federal de
Pernambuco (UFPE).

Tech (dependencies)
• PostgreSQL – Relational Database
• Node.js - An open source server environment
• Metabase - An open source data visualization tool

Installation:
• Follow PostgreSQL’s installation instructions
• Follow Node.Js's installation instructions
• Follow Metabase's installation instructions
• Fork this repository
• Use:
cd council-expenses
npm install
node app.js
• Populate the database requesting all the routes
• Create the visualizations on Metabase with the SQL’s present on the repository

29