3.6 Usando o esaj para listar processos

A CJSG possui vários parâmetros para consulta de decisões. As mais usadas são

  • Palavras-chave
  • Classe, assunto e câmaras
  • Intervalos de datas

3.6.1 Pesquisa por palavras-chave

A pesquisa por palavras-chave não tem segredo. Basta você seguir as especificações deste link.

É importante ressaltar alguns pontos

  • O e-SAJ não disponibiliza seu tesauro (dicionário estruturado) publicamente. Ou seja, você terá de confiar na pesquisa por sinônimos.
  • Você não pode fazer uma busca completamente vazia. Ou você coloca a palavra-chave, ou você especifica outro parâmetro.
  • Você pode pesquisar o termo a OU (NAO a), se quiser ;)

3.6.2 Pesquisa por datas

Você pode usar duas datas para indexar os processos de sua pesquisa. A data de registro é a data em que o serventuário inclui a decisão no sistema. A data de julgamento é a data em que o conjunto de desembargadores proferiram a decisão.

Normalmente, a indexação aconteceria pela data de julgamento, já que queremos vincular os processos à sua data final, não em relação à uma data do sistema. No entanto, as pesquisas indexadas pela data de julgamento não são completamente reprodutíveis, já que à medida que o tempo passa, mais decisões são registradas, mudando a base de julgados.

Regra de bolso:

  • Use data de registro se quiser ter certeza de que você pegou todos os casos em um determinado intervalo de tempo.
  • Use data de julgamento se você estiver pesquisando casos mais antigos (por exemplo, de 2016 para trás), já que a quantidade de decisões não registradas nesse escopo é negligenciável.

3.6.3 Tabelas de classes, assuntos e câmaras

Classes e assuntos definem, respectivamente, os ritos processuais e os tipos processuais. As câmaras são as casinhas dos desembargadores, que podem ser ordinárias (fixas) ou extraordinárias (eventuais, criadas por diferentes motivos).

As classes e assuntos são definidas em formato de árvore. Cada nível dessa árvore tem uma lista de classes/assuntos e seus respectivos códigos. As tabelas de classes/assuntos podem ser obtidas pela função esaj::cjsg_table().

# Não rode esses códigos. Eles baixam os dados diretos da web
classes <- esaj::cjsg_table("classes")
assuntos <- esaj::cjsg_table("subjects")

Já baixamos essas tabelas e colocamos em arquivos .rds (você sabe o que é um arquivo .rds?)

classes <- readRDS("data/cjsg_classes.rds")
assuntos <- readRDS("data/cjsg_assuntos.rds")

glimpse(assuntos)
#> Observations: 3,088
#> Variables: 12
#> $ name0 <chr> "0 - Assunto não Especificado", "14 - DIREITO TRIBUTÁRIO...
#> $ id0   <chr> "0", "14", "14", "14", "14", "14", "14", "14", "14", "14...
#> $ name1 <chr> NA, "5913 - Limitações ao Poder de Tributar", "5913 - Li...
#> $ id1   <chr> NA, "5913", "5913", "5913", "5913", "5913", "5913", "591...
#> $ name2 <chr> NA, "5914 - Imunidade", "5914 - Imunidade", "5914 - Imun...
#> $ id2   <chr> NA, "5914", "5914", "5914", "5914", NA, NA, NA, NA, NA, ...
#> $ name3 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ...
#> $ id3   <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ...
#> $ name4 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ...
#> $ id4   <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ...
#> $ name5 <chr> "0 - Assunto não Especificado", "10527 - Livros / Jornai...
#> $ id5   <chr> "0", "10527", "10528", "10529", "10530", "5915", "10540"...

Na prática, você vai procurar os assuntos que quer nessa tabela, obter os respectivos códigos e guardar em um vetor.

Cuidado: Lembre-se da cifra oculta! Além disso, muitos casos têm assunto vazio.

A tabela de câmaras segue a mesma regra. A única diferença é que não existem níveis, logo você só precisará procurar os nomes em uma coluna

camaras <- esaj::cjsg_table("courts")
camaras <- readRDS("data/cjsg_camaras.rds")
glimpse(camaras)
#> Observations: 1,208
#> Variables: 3
#> $ branch <chr> "DIREITO PÚBLICO", "DIREITO PÚBLICO", "DIREITO PÚBLICO"...
#> $ court  <chr> "1.ª Câmara Direito Público B", "1.º Grupo Direito Públ...
#> $ id     <chr> "0-434", "0-438", "0-439", "0-57", "0-209", "0-1202", "...

3.6.4 A função download_cjsg

Com o escopo em mãos, podemos finalmente começar a baixar dados. Esses são os argumentos da função esaj::download_cjsg(). Veja a documentação ?esaj::download_cjsg

args(esaj::download_cjsg)
#> function (query, path = ".", classes = "", subjects = "", courts = "", 
#>     trial_start = "", trial_end = "", registration_start = "", 
#>     registration_end = "", min_page = 1, max_page = 1, cores = 1, 
#>     wait = 0.5, tj = "tjsp") 
#> NULL

Esse código baixa duas páginas da pesquisa de jurisprudência usando a palavra-chave homicídio, salvando os arquivos HTML na pasta data-raw/cjsg

esaj::download_cjsg("homicídio", "data-raw/cjsg", max_page = 2)

Onde guardar os dados? Ao construir um scraper, é importante guardar os dados brutos na máquina ou num servidor, para reprodutibilidade e manutenção do scraper. Se estiver construindo um pacote do R, o melhor lugar para guardar esses dados é na pasta data-raw, como sugerido no livro r-pkgs. Se os dados forem muito volumosos, pode ser necessário colocar esses documentos numa pasta externa ao pacote.

3.6.5 Exercícios

  1. Faça o download das páginas 2 à 5 de uma pesquisa com palavra-chave igual ao seu nome.
  2. Descubra quantos resultados tem a sua pesquisa usando a função esaj::peek_cjsg().

3.6.6 Arrumando os dados

Para transformar os arquivos HTML em bases de dados prontas para análise, você precisa rodar esaj::parse_cjsg().

files <- dir("data-raw/cjsg", full.names = TRUE, pattern = "page")
d_cjsg <- esaj::parse_cjsg(files)

glimpse(d_cjsg)
#> Observations: 40
#> Variables: 13
#> $ file            <chr> "data-raw/cjsg/page1.html", "data-raw/cjsg/pag...
#> $ id_page         <chr> "1", "2", "3", "4", "5", "6", "7", "8", "9", "...
#> $ id_decision     <chr> "11103571", "11103186", "11103116", "11102507"...
#> $ id_lawsuit      <chr> "2234431-52.2017.8.26.0000", "2243740-97.2017....
#> $ class_subject   <chr> "Classe/Assunto:\n\t\t\t\t\t\t\t\t\t\t\t Habea...
#> $ district        <chr> "São Paulo", "Olímpia", "Mongaguá", "Pirajuí",...
#> $ court           <chr> "6ª Câmara de Direito Criminal", "6ª Câmara de...
#> $ dt_decision     <chr> "11/01/2018", "11/01/2018", "14/12/2017", "11/...
#> $ dt_publication  <chr> "12/01/2018", "12/01/2018", "12/01/2018", "11/...
#> $ dt_registration <chr> "12/01/2018", "12/01/2018", "12/01/2018", "11/...
#> $ rapporteur      <chr> "Ricardo Tucunduva", "Ricardo Tucunduva", "Ama...
#> $ summary         <chr> NA, NA, "TRÁFICO DE DROGAS –  recurso do minis...
#> $ txt_summary     <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...

3.6.7 Exercícios

  1. Na pesquisa que você fez, qual é a comarca de origem mais frequente?
  2. Qual a diferença entre summary e txt_summary?