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.
Gostar disto:
Gosto Carregando...