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.1.1.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.1.1-py3-none-any.whl (182.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: judex-1.1.1.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.1.1.tar.gz
Algorithm Hash digest
SHA256 07332b4d4004ea482d346b788382a2d3119e79ba4cc373a62ef5ee870bd020e2
MD5 5b4547da23a7c81d6778bd1ba9802a07
BLAKE2b-256 059478f4891f07cde3fe31fec59015d11ab427e90faa46d0ef40888bfdc09ec3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: judex-1.1.1-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.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cd398176a773d122a54d035da9523b29d2acdda23778cf86a42cb450d8aa2193
MD5 fae3f11e2f99fc0c04d08b02257db2c0
BLAKE2b-256 667fdc0f4384012bd8cb180f9eaadbfaa7d05d61d109bac1bd244eadf86e8d96

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