Skip to main content

Judex

Ferramenta para extração automatizada de dados do portal do STF.

Utiliza scrapy-selenium. Tem performance de ~4 processos por minuto. Possui suporte a JSON, JSONLines, CSV e SQLite.

Uso via CLI (Recomendado)

# instalar uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# instalar chromedriver (pode demorar um pouco)
sudo apt install chromium-chromedriver

# clonar repositório
git clone https://github.com/noah-art3mis/judex

# baixar dependências
cd judex && uv sync

# instalar em modo editável
uv pip install -e .

# usar o CLI
uv run judex scrape --classe ADI --processo 4916 --processo 4917 --salvar-como json

Parâmetros do CLI

  • -c, --classe: classe do processo de interesse (e.g., ADI, AR, etc.)
  • -p, --processo: número do processo (pode especificar múltiplos)
  • -s, --salvar-como: tipo de persistência (json, csv, jsonl, sql) - pode especificar múltiplos

  • --output-path: diretório de saída (padrão: judex_output)
  • --verbose: habilitar logging verboso
  • --skip-existing: pular processos existentes (padrão: true)
  • --retry-failed: tentar novamente processos que falharam (padrão: true)
  • --max-age: idade máxima dos processos em horas (padrão: 24)

Exemplos de uso

# Uso simples
uv run judex scrape -c ADI -p 4916 -s csv

# Múltiplos processos
uv run judex scrape -c ADI -p 4916 -p 4917 -p 4918 -s json

# Múltiplos formatos de saída
uv run judex scrape -c ADPF -p 123 -s json -s sql

# Com opções avançadas
uv run judex scrape -c ADI -p 123 --output-path /tmp/output --verbose --max-age 48

2. Como biblioteca

pip install judex

O ponto de entrada principal é a classe JudexScraper, que recebe uma classe, uma lista de processos e um método de persistência ('sql', 'json', 'jsonl' e/ou 'csv').

from judex import judexScraper

scraper = JudexScraper(
    classe="ADI",
    processos="[1,2]",
    salvar_como=['csv']
    )
scraper.scrape()

Uso avançado via scrapy

# scrape
uv run scrapy crawl stf -a classe=ADI -a processos=[4916,4917] -O output.json

Esta forma permite aplicar outros parâmetros do scrapy, como LOG_LEVEL, HTTPCACHE_ENABLED, AUTOTHROTTLE_ENABLED, etc.

Resultado

Os dados em json ficam aninhados, enquanto em sql eles são normalizados nas seguintes tabelas:

  • processo: Informações gerais do processo (número único, classe, relator, etc.)
  • partes: Partes envolvidas no processo (autores, réus, etc.)
  • andamentos: Movimentações processuais
  • decisoes: Decisões judiciais com links para os documentos
  • peticoes: Petições apresentadas no processo
  • recursos: Recursos interpostos
  • pautas: Pautas de julgamento

Os dados tem o seguinte formato:

class Processo:
    # ids
    numero_unico: str
    incidente: int
    processo_id: int

    # detalhes
    classe: str
    tipo_processo: str
    liminar: bool
    relator: str
    origem: str
    origem_orgao: str
    data_protocolo: str
    autor1: str
    assuntos: str

    # listas
    partes: list
    andamento: list
    decisao: list 
    deslocamento: list 
    peticao: list 
    recursos: list 

    # metadados
    html: str
    error_message: str
    created_at: datetime
    updated_at: datetime

Solução de Problemas

ChromeDriver não encontrado

# Verificar se ChromeDriver está instalado
which chromedriver

# Instalar ChromeDriver
sudo apt-get install chromium-chromedriver

Erro no uso via scrapy

scrapy: error: running 'scrapy crawl' with more than one spider is not supported

# NO
scrapy crawl stf -a classe=ADPF -a processo=[165, 568]

# YES
scrapy crawl stf -a classe=ADPF -a processo=[165,568]

Considerações Legais e Éticas

Este projeto faz scraping de dados publicamente disponíveis do portal do STF. Por favor, note:

  • robots.txt não é legalmente vinculante - É um protocolo voluntário que sites usam para comunicar com crawlers
  • Nenhum Termo de Serviço encontrado - O portal do STF não possui termos de serviço publicamente acessíveis
  • Apenas dados públicos - O scraper acessa apenas informações de casos publicamente disponíveis
  • Scraping respeitoso - Implementa delays e segue práticas éticas para evitar sobrecarga do servidor

Changelog

v1.1.0

  • CLI usando Typer

v1.0.0

  • Extração inicial de dados do STF
  • Suporte a múltiplas classes de processo
  • Validação de dados com Pydantic
  • Exportação para JSON e CSV
  • Docker, pre-commit hooks (ruff, black, mypy, pytest)

Licença

MIT

Metadata

Release files for judex 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for judex 1.2.0
File Size Uploaded
judex-1.2.0.tar.gz 5.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for judex 1.2.0
File Interpreter ABI Platform
judex-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 5.2 MB

Release files / judex-1.2.0.tar.gz

Download URL judex-1.2.0.tar.gz
Size 5.0 MB
Tags Source
SHA-256 checksum
How to use checksums
2ad38fdecf29e00cea98b85d422f563dcf4ca8912b2eb12e1672c6312127881e
BLAKE2b-256 checksum
How to use checksums
f01aa748d0dedc222e2d957040de2bf38a44d7b25ba14ef7fbc0d814b894ab83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.3

Release files / judex-1.2.0-py3-none-any.whl

Download URL judex-1.2.0-py3-none-any.whl
Size 182.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ea499da5ea0aed80761f1f313bfdcbacc198288fa69f1f10541ff73cb822803a
BLAKE2b-256 checksum
How to use checksums
63ea31f8c98415c61ec1c793a2209301febca909f772b9429730b77db5092e90
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.3

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.1

2 release files

1.0.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page