Nesta primeira postagem do blog, falaremos sobre como baixar e estruturar dados do Tribunal de Justiça de São Paulo. Nas próximas, veremos como agregar valor a esses dados e como aplicar técnicas de machine learning e métodos estatísticos para analisar e fazer predições.
O texto inaugural mostra como baixar dados processuais do Tribunal de Justiça de São Paulo (TJSP), bem como, estruturá-los e deixá-los prontos para análise.
O único pré-requisito é ter noções básicas de programação em R.
Se você não sabe R e quiser aprender para aplicar à jurimetria, eu mantenho um curso Jurimetria Aplicada.
Inicialmente, vamos instalar o pacote tjsp, o qual tem todas as
ferramentas que você necessita para baixar e organizar os dados do TJSP.
Para instalar o pacote tjsp, você deve ter o pacote remotes
instalado.
::install_package("jjesusfilho/tjsp") remotes
O pacote tjsp possui muitas funções para baixar e organizar os dados do TJSP. Ele segue uma sintaxe simples. A maioria das funções começa com tjsp_, seguido do verbo indicador da ação, e.g., baixar, seguido da sigla do repositório. Basicamente, o sistema esaj, responsável por disponibilizar os dados processuais do TJSP em meio eletrônico, usa quatro siglas:
cjsg para consulta de julgados de segundo grau (busca jurisprudencia), nesta página.
cjpg para consulta de julgados de primeiro grau, nesta página.
cposg para consulta dos dados processuais de segundo grau (dados de capa) e movimentação processual, nesta página.
cpopg para consulta dos dados processuais de primeiro grau (dados de capa ) mais movimentação processual, nesta página.
Dessa forma, para baixar um consulta jurisprudencial, você usa a
função tjsp_baixar_cjsg()
. Para baixar os dados de capa de
um processo de primeiro grau, você usa a função
tjsp_baixar_cpopg()
. Dentro delas, você vai informar os
mesmos dados que você informaria na consulta diretamente àquelas
páginas.
A título de exemplo, vamos baixar alguns julgados de segundo grau. Se
você consultar a ajuda da função tjsp_baixar_cjsg()
, verá
que ela tem quase os mesmos parâmetros que você usaria na página do
TJSP:
library(tjsp)
?tjsp_baixar_cjsg
tjsp_baixar_cjsg(
livre = "",
aspas = FALSE,
classe = "",
assunto = "",
orgao_julgador = "",
inicio = "",
fim = "",
inicio_pb = "",
fim_pb = "",
tipo = "A",
n = NULL,
diretorio = "."
)
O primeiro argumento da função chama-se livre, o qual corresponde à “Pesquisa livre` na página referida. Há outros argumentos, como a especificação do assunto ou da classe processual. Hoje usaremos somente a busca livre e o argumento n, o qual indica o número de páginas. Além deles, indicaremos, no argumento diretorio, onde queremos baixar as consultas:
Vamos fazer um experimento com a palavra “feminicídio”. Vamos criar um diretório chamado feminicidio (sem acento) e, dentro dele, um outro chamado cjsg.
dir.create("feminicidio")
dir.create("feminicidio/cjsg")
A consulta por feminicídio resultou em mais de 2500 julgados de segundo grau. Vamos baixar apenas as primeiras 10 páginas da consulta. Veja abaixo como ficará a consulta.
tjsp_baixar_cjsg(livre = "feminicídio",
n = 10,
diretorio = "feminicidio/cjsg")
Foram baixados os htmls. Agora vamos ler esses htmls a fim de visualizá-los. O único argumento que você precisa informar é o diretorio onde foram salvos os htmls.
<- tjsp_ler_cjsg(diretorio = "feminicidio/cjsg") cjsg
O resultado é a criação de um dataframe como na imagem abaixo.
As colunas lidas são as seguintes:
Rows: 200
Columns: 10
$ classe <chr> "Habeas Corpus Criminal", "Apelação Criminal…
$ assunto <chr> "Furto Qualificado", "Homicídio Qualificado"…
$ relator <chr> "Eduardo Abdalla", "Camargo Aranha Filho", "…
$ comarca <chr> "Mairiporã", "Ibiúna", "Araçatuba", "São Vic…
$ orgao_julgador <chr> "6ª Câmara de Direito Criminal", "16ª Câmara…
$ data_julgamento <date> 2022-04-28, 2022-04-28, 2022-04-28, 2022-04…
$ data_publicacao <date> 2022-04-28, 2022-04-28, 2022-04-28, 2022-04…
$ processo <chr> "20665325320228260000", "0002365312019826023…
$ ementa <chr> "HABEAS CORPUS. Pretendida revogação da pris…
$ cdacordao <chr> "15617778", "15617979", "15618448", "1561631…
O próximo passo é consultar os dados de capa desses processos. No entanto, para automatizar a coleta de dados processuais, é necessário identificar-se antes com CPF e senha. Se você está cadastrada no esaj, use a função abaixo. Ela irá abrir um caixa para você incluir seu cpf e senha.
tjsp_autenticar()
Vamos criar um diretório chamado “cposg” dentro do diretório “feminicidio”.
dir.create("feminicidio/cposg")
Agora vamos baixar os processos para a pasta criada. Iremos usar a coluna processo do dataframe cjsg. Para usá-la, basta colocar o cifrão entre o nome do dataframe e o nome da coluna.
tjsp_baixar_cposg(cjsg$processo, diretorio = "feminicidio/cposg")
A leitura dos htmls contendo as informações ocorre em quatro etapas. Inicialmente, nós lemos os dados de capa propriamente ditos, número do processo, magistrado, comarca, vara etc. Em seguida, lemos os dados das partes. Depois lemos a movimentação processual e, por fim, lemos o dispositivo do acórdão.
Para isso, primeiramente listamos todos os arquivos, para então usar o caminho dos arquivos para “parsear” cada um dos grupos de dados mencionados acima. A função abaixo lista todos os htmls.
<- list.files("feminicidio/cposg",full.names = TRUE) arquivos
Agora vamos usar esses arquivos para ler os dados de capa.
<- tjsp_ler_dados_cposg(arquivos) dados
Abaixo as colunas desses dados:
Rows: 230
Columns: 15
$ processo <chr> "00000417220218260408", "00000433520128260383…
$ cd_processo <chr> "RI006OGX10000", "RI006K3E10000", "RI006KX4S0…
$ area <chr> "Criminal", "Criminal", "Criminal", "Criminal…
$ assunto <chr> "DIREITO PENAL-Crimes contra a vida-Feminicíd…
$ classe <chr> " Recurso em Sentido Estrito\n", " Recurso em…
$ distribuicao <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ orgao_julgador <chr> " 16ª Câmara de Direito Criminal\n", " 2ª Câm…
$ origem <chr> "Comarca de Ourinhos / Foro de Ourinhos / 2ª …
$ outros_numeros <chr> "\n \n …
$ relator <chr> "LEME GARCIA", "ANDRÉ CARVALHO E SILVA DE ALM…
$ revisor <chr> NA, NA, "ALBERTO ANDERSON FILHO", "RACHID VAZ…
$ secao <chr> " Direito Criminal\n", " Direito Criminal\n",…
$ ultima_carga <chr> NA, "\n Origem: Se…
$ valor_da_acao <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
$ volume_apenso <chr> "0 / 0", "3 / 1", "1 / 0", "1 / 0", "1 / 0", …
<- tjsp_ler_partes(arquivos) partes
Rows: 554
Columns: 4
$ processo <chr> "00000417220218260408", "00000417220218260408"…
$ tipo_parte <chr> "Recorrente:", "Recorrido:", "Recorrente:", "R…
$ parte <chr> "Ministério Público do Estado de São Paulo", "…
$ representante <chr> NA, "Advogada: \n\t\t \n\t\t\t \n\t\t\t …
O mesmo fazemos com a movimentação processual.
<- tjsp_ler_movimentacao(arquivos) movimentacao
Para visualizar os dados:
Rows: 7,518
Columns: 3
$ processo <chr> "00000417220218260408", "00000417220218260408",…
$ data <date> 2022-04-20, 2022-04-20, 2022-04-19, 2022-04-19…
$ movimentacao <chr> "Prazo", "Publicado em\n \n \…
Por fim, lemos os dispositivos:
<- tjsp_ler_dispositivo(arquivos) dispositivos
E visualizamos:
Rows: 230
Columns: 3
$ processo <chr> "00000417220218260408", "00000433520128260383", …
$ data <date> 2022-04-12, 2022-04-08, 2022-03-18, 2022-02-17,…
$ dispositivo <chr> "Negaram provimento ao recurso. V. U. Sustentou …
Neste tutorial, vimos apenas como baixar e estruturar esses dados em dataframes. Nos próximos, veremos como agregar valor a esses dados. Por exemplo, podemos classificar as decisões se procedentes ou improcedentes. Podemos analisar o tempo do processo.
Há muito mais pela frente. Aguarde os próximos tutoriais.
For attribution, please cite this work as
Filho (2022, April 29). Jurimetria: Como baixar dados do TJSP. Retrieved from https://direitoemdados.consudata.com.br/posts/2022-04-29-como-baixar-dados-do-tjsp/
BibTeX citation
@misc{filho2022como, author = {Filho, José de Jesus}, title = {Jurimetria: Como baixar dados do TJSP}, url = {https://direitoemdados.consudata.com.br/posts/2022-04-29-como-baixar-dados-do-tjsp/}, year = {2022} }