Stock Snatcher é um projeto voltado para a captura de dados de APIs de mercado, combinando-os com scraping de dados para fornecer um serviço que recupera informações de ações, incluindo registros de compras e vendas.
O projeto tem como principais objetivos:
- Capturar informações do mercado e simular cenários de compra e venda de ativos.
- Explorar técnicas eficientes de scraping e construir uma pipeline robusta para coleta de dados, com otimizações como caching e logging.
- Inicializar via Makefile
Use o Makefile para simplificar a inicialização dos serviços.
- Configure o ambiente:
make setup
- seguido de (que pode ser reproduzido executando o arquivo main.py na pasta src/snatcher)
make run
- Inicie o Dockerfile (remova sufixo
-logs
para operar no modo detached):make docker-run-logs
- Inicie o Compose (remova sufixo
-logs
para operar no modo detached):make compose-run-logs
- Podem ser acessados via rota:
URL:PORT/docs ou URL:PORT/api/v1/docs
- Execute os testes de cobertura (TO BE FINISHED - TBF):
make test-coverage
Atenção: Certifique-se de configurar o arquivo
.env
com base no.env_example
.
O serviço estará disponível na porta 8000 para containers e em máquina
- Superar sistemas de segurança que limitam a ação de bots em sites é um desafio novo, mas motivador.
- Identificamos que o Market Watch é protegido pela Datadome, uma empresa que usa algoritmos avançados, inclusive de machine learning, para bloquear bots.
- A combinação de diversas ferramentas e o conhecimento compartilhado pela comunidade são essenciais para o desenvolvimento contínuo deste projeto.
- Tenho explorado as ferramentas Selenium, Scrapy, e BeautifulSoup, além de técnicas de proxying, para reduzir a chance de detecção.
- Este projeto tem como objetivo aprimorar o conhecimento em ferramentas de scraping e técnicas de contorno de bloqueios.
O desenvolvimento do projeto segue a estrutura abaixo:
- Serviços na pasta
src/
– núcleo das operações:snatcher
: backend da API.
-
Serviços na pasta
infra/
– infraestrutura do projeto:snatcher
redis
postgresql
-> Agora operando por RDS da AWS
-
Desenvolvido :
- Rotas de GET e POST Stocks
- Contratos de entrada e saída do StockModel
- Caching com Redis
- PostgresDB em AWS e Docker
- Simples comando habilita todo o serviço
- Logs de Auditoria
-
Desenvolvimentos pendentes (por prioridade) :
- Finalizar processo de estudo e extração eficiente dos dados da Market Watch
- Aprimorar algoritmos para contornar o sistema DataDome.
- Integrar de forma coesa o extrator com MW e Polygon
-
Desenvolvimento futuro
- Logs de monitoramento (Paper trail, etc)
- Acrescentar testes unitários e de integração para adequar cobertura (80%)
- Automatizar a coleta de dados com Airflow.
- Adicionar mais funcionalidades ao serviço de recuperação de dados.
- Implementar relatórios visuais de Logs e Dados(Grafana ou Metabase).
Aqui estão as documentações oficiais para cada tecnologia:
- Domain-Driven Design (DDD)
- Ports and Adapters (Hexagonal Architecture)