Beruflich Dokumente
Kultur Dokumente
CENTRO DE INFORMÁTICA
Recife
2019
Danilo Matheus de Oliveira Pedrosa
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
4. CONCEPÇÃO ...................................................................................................... 15
4.1 Introdução........................................................................................ 15
5. IMPLEMENTAÇÃO ........................................................................................... 19
5.1 Introdução........................................................................................ 19
1.1 Contexto
1.2 Cenário
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
1.5 Relevância
3
2. DADOS ABERTOS
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.
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)
6
captura. Dessa forma, conhecendo a organização desses dados é possível definir qual será a
melhor maneira de extraí-los.
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)
● 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.
9
Figura 6 – Discriminação das verbas indenizatórias de um parlamentar.
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.
10
2.2.1.3 Proposições
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.
11
Figura 10 – Informações detalhadas sobre um projeto de decreto legislativo.
(Fonte: Portal da transparência do Recife)
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
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
4.3 Especificações
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
4.4.2 Cheerio
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.
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.
17
4.4.4 Metabase
18
5. IMPLEMENTAÇÃO
5.1 Introdução
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.
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
21
5.2.2.1 Extração por meio 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);
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.
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
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