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 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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ad38fdecf29e00cea98b85d422f563dcf4ca8912b2eb12e1672c6312127881e
|
|
| MD5 |
822562f64cf7b6bda2881213f492a75a
|
|
| BLAKE2b-256 |
f01aa748d0dedc222e2d957040de2bf38a44d7b25ba14ef7fbc0d814b894ab83
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea499da5ea0aed80761f1f313bfdcbacc198288fa69f1f10541ff73cb822803a
|
|
| MD5 |
8107e8b3e3498d36056483d06940ef4b
|
|
| BLAKE2b-256 |
63ea31f8c98415c61ec1c793a2209301febca909f772b9429730b77db5092e90
|