Skip to main content

Judex Legal Case Scraper - Scrape legal cases from STF

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

judex-1.2.0.tar.gz (5.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

judex-1.2.0-py3-none-any.whl (182.2 kB view details)

Uploaded Python 3

File details

Details for the file judex-1.2.0.tar.gz.

File metadata

  • Download URL: judex-1.2.0.tar.gz
  • Upload date:
  • Size: 5.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.3

File hashes

Hashes for judex-1.2.0.tar.gz
Algorithm Hash digest
SHA256 2ad38fdecf29e00cea98b85d422f563dcf4ca8912b2eb12e1672c6312127881e
MD5 822562f64cf7b6bda2881213f492a75a
BLAKE2b-256 f01aa748d0dedc222e2d957040de2bf38a44d7b25ba14ef7fbc0d814b894ab83

See more details on using hashes here.

File details

Details for the file judex-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: judex-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 182.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.3

File hashes

Hashes for judex-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ea499da5ea0aed80761f1f313bfdcbacc198288fa69f1f10541ff73cb822803a
MD5 8107e8b3e3498d36056483d06940ef4b
BLAKE2b-256 63ea31f8c98415c61ec1c793a2209301febca909f772b9429730b77db5092e90

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page