1. A estratégia modular de trabalho

A coleta de dados é sempre uma operação complexa e que consome tempo precioso. Por isso, trabalhar com dados previamente organizados em bancos de dados relacionais (em uma tabela ou conjunto de tabelas) é a saída mais eficiente. Todavia, dependendo da pesquisa que você deseja fazer, não existem bancos de dados que permitam que você se concentre apenas na atividade de análise.

Quando isso ocorre, busque sempre entrar em contato com os órgãos que fazem a gestão dos dados, pois muitas vezes eles podem oferecer a vocês os dados tabulados, pois esse tipo de base pode ser construída a partir de pesquisas feitas diretamente nos bancos de dados institucionais, por meio de ferramentas que não são abertas ao público em geral.

Ocorre que, especialmente no que toca ao Poder Judiciário, existe uma diretriz do CNJ que exime os órgãos de prestar informações que exijam trabalhos de consolidação e organização dos dados.

Existem certos dados que não estão disponíveis, e quanto a esses não há muito o que fazer no caso de uma resposta negativa às solicitações de informações baseadas lei de transparência. Mas também há dados que estão disponíveis na internet, mas de forma dispersa, o que ocorre especialmente com as informações processuais. Esses dados normalmente se encontram em páginas vinculadas a cada processo, sem que haja uma ferramenta pública que permita agregar esses dados em uma tabela unificada.

É nesses casos que pode ser útil você produzir um extrator de dados capaz de obter as informações das páginas que você pretende extrair. É possível fazer extratores que já organizem os dados de forma adequada, mas essa estratégia de condensação de atividades normalmente não é a mais indicada. Em vez de um programa grande e complexo, que faça toda a atividade de uma vez só, é mais adequado ter um programa que realize cada uma das etapas, dentro de uma abordagem modular (por vezes chamada de pipeline).

Na coleta de dados, podemos trabalhar com no mínimo dois módulos autônomos:

  1. Um módulo de extração de dados, que resulta em uma série de arquivos com dados específicos de cada unidade de análise. O resultado é um conjunto de arquivos com dados não estruturado, visto que os vários atributos estarão misturados dentro de uma longa "string", correspondente ao arquivo HTML que o sistema de dados do órgão judiciário retorna à pesquisa referente a cada um dos objetos.
  2. Um modo de organização dos dados, que converta os dados não-estruturados obtidos em um conjunto estruturado de dados, ou seja, em uma tabela. O desenvolvimento desse módulo será feito dentro da sua máquina, já

2. O módulo de extração de dados: Extratores de HTML

Como essa extração é feita em uma comunicação direta do seu computador com o servidor do órgão judicial, sugerimos que você solicite o máximo de informação por cada consulta. Esse é um cuidado necessário porque vários sistemas são programados para "derrubar" consultas muito longas, que pesquisam um número grande de páginas em sequência.

Se esse problema da conexão limitada não existisse, você poderia escolher uma variável e buscá-la em cada uma das páginas processuais. Todavia, no cenário atual, a estratégia que parece mais promissora não é a de multiplicar o número de consultas simples (uma consulta para cada variável processual, em vez de uma consulta por processo), mas concentrar as consultas, realizando de preferência uma única consulta por cada página.

3. O módulo de organização de dados: Geradores de CSV

A organização dos dados envolve, o desenvolvimento de estratégias para identificar os valores de cada variável, dentro dos dados extraídos. Eu chamo os meus módulos de organização de dados de Geradores de csv, pois eles fazem uma varredura dos dados não-estruturados contidos no arquivo em HTML, identificam as informações que nos interessam e gravam esses dados em uma tabela csv.

Uma vez realizada essa operação, você terá um banco de dados relacional, que segue um modelo de dados definido e que permite que você realize análises a partir dos programas de sua preferência, como o Excel, o PowerBI e o Tableau.

4. Programas Básicos, Intermediários e Avançados

Nesta abordagem, trabalharemos com graus crescentes de complexidade. Pressupõe-se que os interessados nesse módulo já realizaram o Curso de Programação para Juristas ou que já têm um domínio básico de programação (não necessariamente em Python).

4.1. Extrator de HTML Básico

O Extrator Básico é capaz de extrair dados contidos no código fonte das páginas acessíveis por meio de uma query simples. Embora boa parte dos dados reais seja mais complexo, há informações que podem ser obtidas por meio dessa abordagem mais simples, como os dados contidos na página ADI, ADC, ADO e ADPF, que nos servirá como fonte de dados.

4.2. Gerador de CSV Básico

Com base nos dados obtidos com o Extrator Básico, será construído um Gerador Básico, capaz de processar as informações e gerar uma tabela em formato CSV, com todos os campos relevantes contidos nas informações.

4.3 Extrator de HTML Intermediário

O Extrator Intermediário lidará com os dados mais gerais do STF, contidos na pesquisa de Acompanhamento Processual. Embora essa página já conte com scripts em Javascript, não será necessário utilizar instrumentos específicos para lidar com essa linguagem de programação. Nesse caso, lidaremos com a necessidade de extrair dados simultaneamente de várias páginas e combiná-los em documentos estruturados de forma a facilitar a sua organização.

4.4 Gerador de CSV Intermediário

Enquanto o Gerador Básico lida apenas com campos simples, o Gerador Intermediário de CSV tem uma complexidade bem maior, pois ele precisa gerar campos complexos, formados por listas (por exemplo, listas de partes e listas de andamentos) e não apenas por objetos unitários (como é o caso das datas de distribuição  ou mesmo das decisões finais).

4.5 Extrator de HTML Avançado (em construção)

O extrator avançado é capaz de lidar diretamente com o Javascript, por meio da utilização das bibliotecas Selenium e Scrapy.

4.6 Gerador de CSV Avançado (em construção)

O Gerador avançado é capaz de processar as listas, de forma a extrair delas campos unitários importantes para que as informações possam ser estatisticamente tratadas.