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
- Faça o download das páginas 2 à 5 de uma pesquisa com palavra-chave igual ao seu nome.
- 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
- Na pesquisa que você fez, qual é a comarca de origem mais frequente?
- Qual a diferença entre
summary
etxt_summary
?