Crawler desenvolvido para consulta processual no portal do TRF5.
O projeto permite buscar processos por:
- Número do processo;
- CPF/CNPJ;
- Nome da parte.
A execução é feita de forma interativa pelo terminal, permitindo escolher o tipo de busca e informar o termo desejado.
- Python 3
- requests
- BeautifulSoup4
- lxml
- Python 3.11.9
- pip
O projeto utiliza ferramentas de qualidade e formatação:
flake8
black
src/
├── crawler.py
├── parser.py
├── storage.py
├── main.py
└── services/
└── search.py
Responsável pelas requisições HTTP e comunicação com o portal do TRF5.
Responsável pela extração, tratamento e normalização dos dados HTML utilizando BeautifulSoup4.
Responsável pela persistência dos dados em arquivo JSON Lines.
Responsável pelos fluxos de busca, processamento dos processos encontrados, deduplicação e persistência.
Responsável pela interface interativa no terminal e pela orquestração da execução.
- Busca por número do processo;
- Busca por CNPJ;
- Busca por nome da parte;
- Paginação na busca por CNPJ;
- Persistência em JSON Lines;
- Controle de duplicidade de processos;
- Tratamento de falha de conexão;
- Validação de disponibilidade do portal;
- Execução interativa via terminal;
- Separação de responsabilidades por módulo.
git clone https://github.com/Jaquelinesa82/web_scrapincd web_scrapinpython -m venv .venvsource .venv/bin/activate.venv\Scripts\activatepip install -r requirements.txtpython src/main.pyA documentação do projeto está disponível no MkDocs.
Para instalar as dependências de documentação:
pip install -r requirements-dev.txtPara rodar a documentação localmente:
mkdocs servePara gerar o site estático:
mkdocs buildOs arquivos de documentação estão em docs/.
Os dados são persistidos em:
data/processos.jsonl
Cada linha contém um JSON com:
- número do processo;
- numero legado;
- data de autuação;
- relator;
- envolvidos;
- movimentações;
Os arquivos extraídos em data/ estão configurados no .gitignore.
O projeto foi estruturado buscando simplicidade, legibilidade e separação de responsabilidades.
As responsabilidades foram divididas em módulos independentes:
crawler.py→ requisições HTTP e disponibilidade do portal;parser.py→ extração e normalização dos dados;storage.py→ persistência em JSON Lines;services/search.py→ fluxos de busca, deduplicação e persistência;main.py→ interface interativa e orquestração.
A busca por CNPJ implementa paginação para descoberta de múltiplos processos.
Foi implementado controle de duplicidade para evitar persistência repetida de processos encontrados em diferentes tipos de busca.
O crawler também realiza validação de disponibilidade do portal antes da execução, evitando limpar arquivos anteriores em caso de indisponibilidade do sistema.
A busca por CNPJ possui paginação própria no portal do TRF5.
Foi necessário analisar o padrão das URLs de paginação para implementar a navegação entre páginas de resultados.
Durante os testes, foram identificados cenários de falha de conexão e indisponibilidade temporária do portal.
Para evitar perda de dados persistidos anteriormente, foi implementada uma validação de disponibilidade do portal antes da limpeza do arquivo de saída.
- Persistência em banco de dados;
- Exportação PDF;
- Testes automatizados;
- Dockerização do projeto.