courts.trf3.client.TRF3Scraper
courts.trf3.client.TRF3Scraper(
verbose=0,
download_path=None,
sleep_time=1.0,
**kwargs,
)Raspador do TRF3: consulta pública do PJe e busca de jurisprudência.
cpopg consulta processos de 1º grau no PJe (pje1g.trf3.jus.br), pela base TRFConsultaScraper. cjsg pesquisa jurisprudência em web.trf3.jus.br/jurisprudencia, um sistema separado, com sessão e perfil HTTP próprios (perfis_http["cjsg"]).
Methods
| Name | Description |
|---|---|
| cjsg | Pesquisa jurisprudência no portal do TRF3 (web.trf3.jus.br/jurisprudencia). |
| cjsg_download | Baixa as páginas da lista resumida da busca de jurisprudência do TRF3. |
| cjsg_parse | Converte as páginas de cjsg_download em DataFrame. |
cjsg
courts.trf3.client.TRF3Scraper.cjsg(pesquisa=None, paginas=None, **kwargs)Pesquisa jurisprudência no portal do TRF3 (web.trf3.jus.br/jurisprudencia).
Cada chamada abre uma sessão própria no portal, executa a busca e lê a lista resumida, que já traz ementa e inteiro teor de cada documento. Custa três requisições fixas (abertura da aba, POST da busca e GET do redirect que traz a página 1) e uma por página adicional, com sleep_time entre páginas.
Parameters
| Name | Type | Description | Default |
|---|---|---|---|
| pesquisa | str | None |
Texto da pesquisa livre, com os operadores do portal (operador padrão e). Pode ficar vazio quando outro critério for informado. |
None |
| paginas | int | list | range | None |
Páginas 1-based; None baixa todas. Páginas além do total são ignoradas sem requisição. |
None |
| **kwargs | Any |
Filtros aceitos por InputCJSGTRF3: * base (str): "acordaos" (default; acórdãos do TRF3), "turmas_recursais" (acórdãos das Turmas Recursais dos JEFs), "monocraticas" (decisões monocráticas do TRF3) ou "monocraticas_turmas_recursais" (decisões monocráticas das Turmas Recursais). * numero_processo (str): Número do processo, com ou sem máscara. * relator (str): Nome do relator ou do relator para o acórdão, como o portal indexa (ex.: "NERY JUNIOR", a forma do dropdown do formulário). O portal casa nomes parciais. * classe (str): Classe como no dropdown, com sigla (ex.: "AI - AGRAVO DE INSTRUMENTO"). * orgao_julgador (str): Órgão julgador, pelo rótulo do dropdown do formulário ("3ª Turma", "11ª Turma Recursal da Seção Judiciária de São Paulo") ou pelo nome indexado da opção ("TERCEIRA TURMA", "11ª TURMA RECURSAL DE SÃO PAULO"), sem diferença de caixa e de espaços. O valor da coluna orgao_julgador do resultado também serve: “1a. seção” vira “1A”, como no formulário, então "QUINTA TURMA - 1A. SEÇÃO" casa com a opção QUINTA TURMA - 1a. SEÇÃO. A busca manda o par que o navegador mandaria, rótulo e nome indexado da opção, lido do formulário da aba, e traz os documentos gravados com qualquer dos dois (medido com “medicamento”: "QUINTA TURMA" traz 576 documentos, contra 443 do rótulo sozinho e 133 do nome indexado sozinho). Rótulo de mais de uma opção, como "5ª Turma" nos acórdãos, levanta ValueError; texto que não casa com nenhuma opção vai como está e só encontra o que o portal grava com essa grafia. Não existe nas bases de monocráticas. * ementa (str): Texto pesquisado só na ementa. Não existe nas bases de monocráticas. * indexacao (str): Texto pesquisado na indexação (“Objeto do Processo” nas Turmas Recursais). Não existe nas bases de monocráticas. * data_julgamento_inicio / data_julgamento_fim (str): Data de julgamento; nas monocráticas, data da decisão. * data_publicacao_inicio / data_publicacao_fim (str): Data de publicação. Não combina com data_julgamento_*. * tamanho_pagina (int): 10 (default), 30 ou 50 documentos por página. |
{} |
Aliases deprecados (popados com DeprecationWarning antes do pydantic): * query / termo -> pesquisa * data_inicio / data_fim -> data_julgamento_inicio / _fim * data_julgamento_de / _ate -> data_julgamento_inicio / _fim * data_publicacao_de / _ate -> data_publicacao_inicio / _fim
Raises
| Name | Type | Description |
|---|---|---|
TypeError |
Quando todos os erros são kwargs desconhecidos. | |
ValidationError |
Para os demais erros do schema (base ou tamanho_pagina fora do domínio, data inválida). |
|
ValueError |
Datas de julgamento e de publicação juntas; filtro que a base de monocráticas não tem; nenhum critério; orgao_julgador que corresponde a mais de uma opção do formulário (a mensagem lista os nomes indexados que desfazem a ambiguidade); com paginas=None, primeira página com documentos e total de resultados ilegível. |
|
BotChallengeBlockedError |
A Akamai bloqueou o IP (HTTP 403 Access Denied). |
|
RuntimeError |
O portal devolveu a página de sessão expirada, ou respondeu 200 com uma página que não é a lista de resultados (formulário de busca, manutenção), na primeira página ou nas seguintes; ou, da página 2 em diante, com o aviso de nenhum resultado quando a primeira página informou total maior que zero. Busca sem resultados não é erro: devolve DataFrame vazio. |
Returns
| Name | Type | Description |
|---|---|---|
pd.DataFrame |
pd.DataFrame: Uma linha por documento, com processo, |
|
pd.DataFrame |
classe, orgao_julgador, relator, relator_acordao, |
|
pd.DataFrame |
data_julgamento, data_publicacao, meio_publicacao |
|
pd.DataFrame |
(DJEN, Intimação via sistema, e-DJF3 Judicial 1…), |
|
pd.DataFrame |
ementa (nas monocráticas, o texto da decisão), base, |
|
pd.DataFrame |
url_inteiro_teor (íntegra do acórdão no site do TRF3; vazio |
|
pd.DataFrame |
nas monocráticas) e inteiro_teor (texto completo). Em parte |
|
pd.DataFrame |
dos acórdãos antigos das Turmas Recursais, ementa vem nula |
|
pd.DataFrame |
porque o portal manda o bloco da ementa vazio; inteiro_teor |
|
pd.DataFrame |
vem preenchido. Na medição, com “medicamento”, foram nulas todas | |
pd.DataFrame |
as ementas de 2013 e 2014 e parte das de 2011. |
Exemplo
>>> import juscraper as jus
>>> trf3 = jus.scraper("trf3")
>>> df = trf3.cjsg(
... "medicamento", base="turmas_recursais", paginas=range(1, 3),
... data_julgamento_inicio="2026-01-01", data_julgamento_fim="2026-06-30",
... )See Also
InputCJSGTRF3: fonte dos filtros aceitos.
cjsg_download
courts.trf3.client.TRF3Scraper.cjsg_download(
pesquisa=None,
paginas=None,
**kwargs,
)Baixa as páginas da lista resumida da busca de jurisprudência do TRF3.
Aceita os mesmos filtros de cjsg; veja lá a lista completa.
Returns
| Name | Type | Description |
|---|---|---|
list[str] |
list[str]: HTML de cada página baixada, na ordem pedida. |
cjsg_parse
courts.trf3.client.TRF3Scraper.cjsg_parse(resultados_brutos)Converte as páginas de cjsg_download em DataFrame.
Returns
| Name | Type | Description |
|---|---|---|
pd.DataFrame |
pd.DataFrame: Uma linha por documento; colunas descritas em cjsg. |