Obter a legislação do dre.pt – versão de 2021

Mais uma vez o site dos Diários da República Electrónicos foi refeito. A nova versão foi colocada no ar no dia 2 de Novembro, sem pompa nem circunstância (numa busca rápida não encontrei nenhum anúncio). Esta nova versão mantém o aspecto do site anterior mas mudou o código que o constitui completamente.

Assim o método para obter a legislação mudou. Neste post mostro como se pode continuar a obter esta informação. Notar que a estrutura interna do site é extremamente ineficiente, são desperdiçados muito recursos que tornam o site mais lento do que necessitaria ser. Não me vou pronunciar mais sobre estes problemas, talvez num outro post.

O novo site carrega uma página simples e depois faz pedidos XHR para obter os dados a mostrar. Estes pedidos são feitos usando métodos HTTP POST. Os parâmetros dos métodos post são passados usando JSON. As respostas obtidas são também JSON.

Devido à arquitectura usada o trabalho para obter os documentos do DRE fica muito simplificado. Fundamentalmente necessitamos de identificar a forma de obter 3 tipos de informação:

  1. Lista dos DRs de uma determinada data
  2. Lista dos documentos de um dado DR
  3. Obter um determinado documento

Continuar a ler

Obter a legislação do dre.pt – versão de 2014

ATENÇÃOEm Novembro de 2021 a Casa da Moeda alterou o site do DRE pelo que as notas que constam neste post já não são válidas. Mantêm-se o post para memória futura.

O primeiro problema: chegar ao texto integral dos diplomas

Tal como no site do dre.pt antigo, neste novo site existe uma forma de aceder ao texto integral usando URLs encontrados usando um motor de busca.

Por exemplo se fizermos uma busca com:

site:dre.pt inurl:maximized "Série II"

Vamos obter URLs para páginas deste género.

O URL anterior pode ser simplificado para qualquer coisa como:

https://dre.pt/home/-/dre/57968656/details/3/maximized?serie=II&parte_filter=31

Neste caso o diplomaId é 57968656.

Infelizmente o “diplomaId” não é sequencial.

Assim o problema consiste em obter este diplomaId para os documentos de cada dia.

Se consultarmos os documentos da “Parte C” da série II do DR, para um dado dia no passado recente, vamos encontrar algumas ligações com o texto:

Consultar vigência e produção de efeitos (DIGESTO)

A informação adicional obtida via estes links é muito pouca para o acesso grátis ao dre.pt. No entanto, se olharmos ao respectivo URL, identificamos o seguinte:

diplomaId=62080172

Este diplomaId corresponde ao número que nos dá acesso ao texto integral que mencionei antes! O exemplo anterior corresponde ao Despacho 14844/2014, que tem este texto integral.

O segundo problema: obter a lista dos documentos para um dado dia

PASSO 1 – O truque fundamental reside na forma como obtemos a lista dos documentos para um dado DR, a query a fazer ao servidor deverá ser do tipo:

https://dre.pt/web/guest/pesquisa-avancada/-/asearch/advanced/maximized?types=DR&dataPublicacao=<data>

Daqui iremos obter uma lista de Diários da República (exemplo).

PASSO 2 – Por exemplo para o DR n.º 37/2015, Série I de 2015-02-23 o URL obtido no passo 1 é:


https://dre.pt/web/guest/pesquisa-avancada/-/asearch/66567259/details/maximized

Limpei o URL da parte da query dado que parece não ser usada para nada de útil aos nossos objectivos.

PASSO 3 – Vamos agora obter o ID único que nos dá acesso à página do digesto como referi mais acima. Cada documento irá ter uma estrutura parecida à seguinte:

<li>
<a href="/application/file/<número pdf>"> [ ... ]
<span class="rgba"><número digesto></span>
</a>
<div class="author"> [...] </div>
<div class="summary"> [...] </div>
<div class="action"><a class="clara" ...>Link para o digesto, isto é opcional</a></div>
</li>

Quando se faz a query da forma que mostrei temos uma tag span com class rgba. Se o número contido neste span for diferente do número do link para o PDF, então podemos construir links para a página do digesto com o texto integral! (exemplo para a Portaria 46/2015 que é a primeira do DR que usei como exemplo, notem que é da série I).

É simples, agora, fazer um scraper para isto.

Tanto quanto posso aferir isto funciona para todo o DR, série I e série II excepto para a parte dos contratos da série II.

Obter a legislação do dre.tretas.org

Mantemos em http://dre.tretas.org uma cópia do DRE com algumas funcionalidades que faltam no site oficial. Essas funcionalidades incluem um motor de busca eficiente, um sistema robusto de bookmarks, etiquetagem e anotação da legislação.

Para além disso, na página Acerca, do site, damos a possibilidade de fazer o download dos dados que, desde 2011, retiramos do site oficial. Disponibilizamos também, no GitLab, todo o código fonte do site. Desta forma qualquer um pode tratar estes dados como melhor entender.

Neste post descrevo a estrutura destes dados.

Continuar a ler

Ler o base.gov.pt

O estado mantém uma base de dados pública onde é comunicada a informação sobre todos os contratos celebrados ao abrigo do Código dos Contratos Públicos. Este portal do governo é uma excelente ferramenta que abre uma janela para o funcionamento da administração pública e permite aos cidadãos exercerem o seu escrutínio sobre as boas práticas governativas do seus eleitos.

Infelizmente estamos sempre limitados às ferramentas disponibilizadas no site para fazermos a nossa análise. Se quisermos responder a perguntas que não tenham sido antecipadas aquando da construção do site não o poderemos fazer. Por exemplo, no site actual é difícil responder a perguntas tais como:

  • Qual a distribuição geográfica dos contratos públicos?
  • Qual a distribuição temporal da adjudicação dos contratos? E qual é o volume associado?
  • Há mais contratos públicos imediatamente antes das eleições?

Para responder a todas estas e outras perguntas a condição obrigatória é termos na nossa posse os dados constantes no base.gov.pt. Ou seja, devemos poder tratar os dados como entendermos.

O site do estado não permite exportar mais de 2000 contratos de uma vez o que é claramente insuficiente face aos quase quatrocentos mil contratos registados actualmente. É pois necessário, de alguma forma, obtermos os dados constantes na base de dados do base.gov.pt.

Neste post mostro como se pode, facilmente, obter os referidos dados.

Notar que já houve pelo menos duas iniciativas para fazer este trabalho, o transparencia-pt.org, actualmente em baixo e o Despesa Pública que parece ter deixado de se actualizar com novos dados. Nós no tretas.org já mantemos um conjunto de iniciativas que nos monopolizam os tempos livres pelo que não podemos prometer embarcar em mais um novo projecto. Aqui ficam algumas dicas para quem quiser iniciar um projecto deste tipo.

Continuar a ler

São burros, são extrema e irreversivelmente burros!

Haverá saída?


Estou-me a referir, neste caso aos elementos do nosso governo, governo esse que tutela a CP e que por inerência define os objectivos estratégicos e mantém em funções os administradores da empresa. Por favor notem que não vou fazer distinção entre as várias empresas que constituem o que em tempos foi simplesmente a CP. Diz a teoria que essa divisão serve para melhor administrar as empresas, na prática as operações foram mal estudadas e ainda pior executadas, entrando as empresas quase imediatamente em falência técnica. A única diferença palpável, parece ser haver muito mais lugares de administradores disponíveis, para distribuir ou acumular. Como convém.

Continuar a ler