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.
# instalar wsl (pode demorar)
wsl --install
# instalar uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# instalar chromedriver (pode demorar)
sudo apt install chromium-chromedriver
# clonar repositório
git clone https://github.com/noah-art3mis/judex
# baixar dependências
cd judex && uv sync
# instalar
uv pip install -e .
# usar o CLI
uv run judex scrape --classe ADI --processo 4916 --processo 4917 --salvar-como json-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)--quiet: reduzir verbosidade (log INFO). Padrão: verboso (DEBUG)--log-level: definir nível de log do Scrapy (CRITICAL, ERROR, WARNING, INFO, DEBUG)--no-cache/--cache: desabilitar/habilitar cache HTTP (quando usado, desabilita)--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)
# 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 --max-age 48
# Modo silencioso (INFO)
uv run judex scrape -c ADI -p 123 -s json --quiet
# Controlando logs e cache HTTP
uv run judex scrape -c ADI -p 123 -s json --log-level INFO --no-cachepip install judexO 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()# scrape
uv run scrapy crawl stf -a classe=ADI -a processos=[4916,4917] -O output.jsonEsta forma permite aplicar outros parâmetros do scrapy, como LOG_LEVEL, HTTPCACHE_ENABLED, AUTOTHROTTLE_ENABLED, etc.
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 processuaisdecisoes: Decisões judiciais com links para os documentospeticoes: Petições apresentadas no processorecursos: Recursos interpostospautas: 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
orgao_origem: str
data_protocolo: str
primeiro_autor: 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# Verificar se ChromeDriver está instalado
which chromedriver
# Instalar ChromeDriver
sudo apt-get install chromium-chromedriverscrapy: 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]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
- CLI usando Typer
- 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)
MIT