O projeto realiza web-scraping de ofertas do site Mercado Livre, valida e processa essas ofertas, e integra com o banco de dados PostgreSQL, utilizando Kafka para processamento de mensagens.
No projeto foram criados dois tópicos Kafka: um para coletar todas as ofertas e outro para validar os descontos maiores que 50% e fazer a inserção desses produtos com maior desconto no banco de dados.
- src
- config
- kafka_config.py
- database
- .env
- connection.py
- model
- modelOffers.py
- discount_consumer.py
- mercadolivre_scraping.py
- offer_consumer.py
- offer_producer.py
- docker-compose.yml
- Scraping de Ofertas: Extrai dados de ofertas, incluindo títulos, preços antigos e novos, e data/hora de coleta.
- Validação de Ofertas: Valida os dados extraídos utilizando modelos Pydantic.
- Processamento de Ofertas com Desconto: Calcula e valida descontos, enviando ofertas com mais de 50% de desconto para um tópico Kafka específico.
- Integração com Banco de Dados: Armazena e gerencia ofertas em um banco de dados PostgreSQL.
- Python
- Poetry
- Apache Kafka
- PostgreSQL
- Docker
- Docker Compose
-
Clone este repositório:
git clone https://github.com/rhanyele/mercadolivre-scraping-kafka.git
-
Acesse o diretório do projeto:
cd mercadolivre-scraping-kafka
-
Instale as dependências usando Poetry:
poetry install
-
Configure as variáveis de ambiente no arquivo
database/.env
com as informações do seu banco de dados PostgreSQL:DB_HOST=seu_host DB_PORT=sua_porta DB_NAME=seu_banco_de_dados DB_USER=seu_usuario DB_PASS=sua_senha
-
Execute o docker compose para criar os containers do Apache Kafka:
docker compose up
-
Faça o Web-Scraping das ofertas:
poetry run python .\src\mercadolivre_scraping.py
-
Execute o consumer Kafka que valida os descontos e envia para o tópico de desconto:
poetry run python .\src\offer_consumer.py
-
Execute o consumer Kafka que salva ofertas com mais de 50% de desconto no PostgreSQL:
poetry run python .\src\discount_consumer.py
Sinta-se à vontade para contribuir com novos recursos, correções de bugs ou melhorias de desempenho. Basta abrir uma issue ou enviar um pull request!
Rhanyele Teixeira Nunes Marinho
Este projeto está licenciado sob a MIT License.