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 simples via scrapy (Linux)
# 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
# scrape
uv run scrapy crawl stf -a classe=ADI -a processos=[4916,4917] -O output.json
- classe: classe dos processos de interesse (e.g., ADI, AR, etc.)
- processo: número dos processos. Na CLI, devem ter o formato
[165,568], sem espaço. - salvar_como: permite alterar como os dados são armazenados. Pode ser
json,jsonlines,csve/ousql.
Para outros parâmetros, ver settings.py ou a documentação do scrapy. Configurações relevantes do scrapy incluem:
LOG_LEVEL = "DEBUG"
HTTPCACHE_ENABLED = True
AUTOTHROTTLE_ENABLED = True
2. Como biblioteca
pip install judex
The main entry point is the JudexScraper class, which takes a class, a list of cases, and a persistence method ('sql', 'json', 'jsonlines' and/or 'csv').
from judex import judexScraper
scraper = JudexScraper(
classe="ADI",
processos="[1,2]",
salvar_como=['csv']
)
scraper.scrape()
Resultado
Os dados em json ficam alinhandos, enquanto em sql eles são normalizados nas seguintes tabelas:
processos: 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
class Processo:
numero_unico: str
incidente: int
processo_id: int
classe: str
tipo_processo: str
liminar: bool
relator: str
origem: str
origem_orgao: str
data_protocolo: str
autor1: str
assuntos: str
html: str
error_message: str
created_at: datetime
updated_at: datetime
class Partes:
id: int
numero_unico: str
index: int
tipo: str
nome: str
class Andamento:
id: int
numero_unico: str
index_num: int
data: str
nome: str
complemento: str
julgador: str
class Decisao:
id: int
numero_unico: str
index_num: int
data: str
nome: str
julgador: str
complemento: str
link: str
class Deslocamento:
id: int
numero_unico: str
index_num: int
data_enviado: str
data_recebido: str
enviado_por: str
recebido_por: str
guia: str
class Peticao:
id: int
numero_unico: str
index_num: int
data: str
tipo: str
autor: str
recebido_data: str
recebido_por: str
class Recurso:
id: int
numero_unico: str
index_num: int
data: str
nome: str
julgador: str
complemento: str
autor: str
class Pauta:
id: int
numero_unico: str
index_num: int
data: str
nome: str
complemento: str
relator: str
Solução de Problemas
ChromeDriver não encontrado
# Verificar se ChromeDriver está instalado
which chromedriver
# Instalar ChromeDriver
sudo apt-get install chromium-chromedriver
Espaço na lista de processos
scrapy: error: running 'scrapy crawl' with more than one spider is not supported
# NO
scrapy crawl stf -a classe=ADPF -a processos=[165, 568]
# YES
scrapy crawl stf -a classe=ADPF -a processos=[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.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-0.1.0.tar.gz.
File metadata
- Download URL: judex-0.1.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 |
7c4bf3232312f281f28e92fc2750a054e5bf0e0b88cf3d7edeb194d80ac22a56
|
|
| MD5 |
d8d24066a4d607e7ae213d0d5468831a
|
|
| BLAKE2b-256 |
7026f9445faefedf4bcc19a9787ae58152b5e64c9405f6147f6e0fbfdb3dac62
|
File details
Details for the file judex-0.1.0-py3-none-any.whl.
File metadata
- Download URL: judex-0.1.0-py3-none-any.whl
- Upload date:
- Size: 181.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3e9d4eee2fc306c3a9d8fa53c0fd3c770344933e0086617b25fd37dc27cc2e5
|
|
| MD5 |
89e570ca00603c8e191f8b43416710ea
|
|
| BLAKE2b-256 |
e59b4cefb787e6e9a4cfc8c14ea2837c4e856aca40d32b14dec8304bf66e86b3
|