https://github.com/tsffarias/scrapy_monitoramento_preco_ecommerce
Projeto de ETL para Monitoramento de Preços e produtos E-commerce com o objetivo de coletar informações detalhadas e implementar um dashboard que facilite a visualização e análise desses dados.
https://github.com/tsffarias/scrapy_monitoramento_preco_ecommerce
pandas pricing python scrapy sqlite3 streamlit webscraping
Last synced: 2 months ago
JSON representation
Projeto de ETL para Monitoramento de Preços e produtos E-commerce com o objetivo de coletar informações detalhadas e implementar um dashboard que facilite a visualização e análise desses dados.
- Host: GitHub
- URL: https://github.com/tsffarias/scrapy_monitoramento_preco_ecommerce
- Owner: tsffarias
- Created: 2024-05-30T16:53:35.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-01-04T04:32:26.000Z (over 1 year ago)
- Last Synced: 2025-07-25T21:44:40.483Z (11 months ago)
- Topics: pandas, pricing, python, scrapy, sqlite3, streamlit, webscraping
- Language: Python
- Homepage: https://www.linkedin.com/in/thiagosilvafarias/
- Size: 4.34 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Projeto de ETL para Monitoramento de Preços e Produtos E-commerce
## Descrição
Imagine que uma marca de tênis deseja avaliar sua relevância no ecossistema do Mercado Livre e Centauro. Para isso, é necessário obter **KPIs** relacionados ao segmento de tênis nessas plataformas. O objetivo é coletar informações detalhadas e implementar um dashboard que facilite a visualização e análise desses dados.
### Diagrama

## Proposta do Projeto
Fomos contratados por uma grande empresa para fazer uma pesquisa de mercado na categoria de tênis esportivos dentro de diversos e-commerces: Mercado Livre e Centauro. O objetivo dessa empresa é avaliar:
- 👟 Quais marcas são mais encontradas até a 10ª página
- 💰 Qual o preço médio por marca
- ⭐ Qual a satisfação por marca
# Fontes de Dados
- Mercado Livre
- Centauro
### Dashboard

## Etapas do Projeto
### Etapa 1: Extração dos Dados
Utilização de **Web Scraping** com a biblioteca **Scrapy** para obter os dados necessários do Mercado Livre e Centauro.
### Etapa 2: Transformação dos Dados
Processamento e limpeza dos dados utilizando a biblioteca **Pandas** para garantir que estejam prontos para análise.
### Etapa 3: Carregamento dos Dados
Armazenamento dos dados transformados em um banco de dados **SQLite3**.
### Etapa 4: Visualização dos Dados
Desenvolvimento de um **dashboard interativo** usando **Streamlit** para consumir os dados e apresentar os insights de forma visual e intuitiva.
## Ferramentas Utilizadas
- **Python**: Linguagem de programação utilizada para o desenvolvimento do projeto.
- **Pandas**: Biblioteca utilizada para manipulação e transformação de dados.
- **Scrapy**: Framework utilizado para realizar o web scraping e extrair dados da web.
- **Streamlit**: Framework utilizado para criar aplicações web interativas e visualizar os dados extraídos.
- **SQLite3**: Banco de dados utilizado para armazenar os dados transformados.
## Estrutura de Diretórios
```plaintext
.
data/
│── centauro.jsonl
│── mercado_livre.jsonl
│── quotes.db
pics/
│── arquitetura.png
src/
├── coleta/
│ ├── spiders/
│ │ └── centauro.py
│ │ └── mercadolivre.py
│ ├── pipelines.py
│ ├── items.py
│ ├── settings.py
├── transformacao/
│ ├── centauro.py
│ ├── mercadolivre.py
├── dashboard/
│ ├── app.py
├── requirements.txt
└── README.md
```
## Como Executar o Projeto
Primeiramente, acesse a pasta do projeto e instale as dependências usando o `pip` ou o `Poetry`. Para isso, execute um dos comandos abaixo:
```sh
poetry install
```
ou
```sh
pip install -r requirements.txt
```
## Instalação via Docker
Caso queira realizar a instalação via Docker:
1. Antes de rodar o Docker, crie um arquivo `.env` na raiz do projeto com os seguintes valores (exemplo está no arquivo .env_example):
```plaintext
DB_HOST_PROD=postgres
DB_PORT_PROD=5432
DB_NAME_PROD=mydatabase
DB_USER_PROD=user
DB_PASS_PROD=password
PGADMIN_EMAIL=email_pgadmin
PGADMIN_PASSWORD=password_pgadmin
```
2. Para iniciar a aplicação, execute:
```bash
docker-compose up -d --build
```
Em seguida, para executar cada etapa, siga as instruções abaixo:
### Extração dos dados usando Web Scraping
```sh
cd src/coleta/
scrapy crawl mercadolivre -o ../../data/mercado_livre.jsonl
scrapy crawl centauro -o ../../data/centauro.jsonl
```
### Transformar e carregar os dados
```sh
python src/transformacao/mercado_livre.py
python src/transformacao/centauro.py
```
### Visualizar Dashboard
```sh
streamlit run src/dashboard/app.py
```
## Análise dos Dados do dia 07/06/2024
### 📊 Análise Descritiva dos Dados
#### Mercado Livre:
- **Marcas mais comuns**:
- **Olympikus**: 148 produtos
- **Mizuno**: 40 produtos
- **Fila**: 29 produtos
- **Preço médio por marca**:
- **MVP FITNESS**: R$ 360,00
- **FILA**: R$ 301,38
- **NEW BALANCE**: R$ 257,47
- **PUMA**: R$ 256,85
- **QIX**: R$ 237,00
- **UNDER ARMOUR**: R$ 223,77
- **ADIDAS**: R$ 216,40
- **MIZUNO**: R$ 214,21
- **N&W**: R$ 189,00
- **MZ**: R$ 183,50
- **Satisfação por marca (por maior número de quantidade de avaliação)**:
- **OLYMPIKUS**: 4,73 e quantidade de avaliações: 119
- **MIZUNO**: 4,59 e quantidade de avaliações: 28
- **FILA**: 4,78 e quantidade de avaliações: 25
#### Centauro:
- **Marcas mais comuns**:
- **Olympikus**: 104 produtos
- **Everlast**: 76 produtos
- **Under Armour**: 73 produtos
- **Preço médio por marca**:
- **New Balance**: R$ 974
- **Reebok**: R$ 697
- **Nike**: R$ 582
- **Asics**: R$ 448
- **Adidas**: R$ 414
- **Armour**: R$ 399
- **Bull**: R$ 399
- **Under Armour**: R$ 388
- **Skechers**: R$ 323
- **Satisfação por marca (por maior número de quantidade de avaliação)**:
- **Nike**: 4,00 e quantidade de avaliações: 18
- **Olympikus**: 4,62 e quantidade de avaliações: 7
- **Under Armour**: 3,60 e quantidade de avaliações: 5
### 💡 Insights Relevantes:
1. **Marcas Mais Comuns**:
- **Mercado Livre**: A marca Olympikus é a mais comum com 148 produtos, seguida por Mizuno com 40 produtos e Fila com 29 produtos.
- **Centauro**: A Olympikus também lidera com 104 produtos, seguida por Everlast com 76 produtos e Under Armour com 73 produtos.
2. **Preço Médio por Marca**:
- **Mercado Livre**: As marcas com os preços médios mais altos são MVP FITNESS (R$ 360,00), FILA (R$ 301,38) e NEW BALANCE (R$ 257,47).
- **Centauro**: As marcas com os preços médios mais altos são New Balance (R$ 974), Reebok (R$ 697) e Nike (R$ 582).
3. **Satisfação por Marca (com base na quantidade de avaliações)**:
- **Mercado Livre**: A Olympikus possui uma alta satisfação com uma média de 4,73 (119 avaliações), seguida por Mizuno com uma média de 4,59 (28 avaliações) e Fila com uma média de 4,78 (25 avaliações).
- **Centauro**: A Nike tem uma média de satisfação de 4,00 com 18 avaliações, Olympikus com 4,62 e 7 avaliações, e Under Armour com 3,60 e 5 avaliações.
Esses insights mostram que a Olympikus é uma marca muito presente e bem avaliada em ambas as plataformas, indicando uma forte aceitação no mercado. As marcas com preços mais altos no Mercado Livre são MVP FITNESS, FILA e NEW BALANCE, enquanto na Centauro, as marcas mais caras são New Balance, Reebok e Nike, o que pode indicar uma diferenciação no mercado de produtos premium. A satisfação média elevada de marcas como Olympikus, Mizuno e Fila no Mercado Livre, e Nike e Olympikus na Centauro, sugere uma boa aceitação dos consumidores.
Essas análises fornecem uma visão clara das tendências de mercado e preferências do consumidor nos e-commerces analisados, permitindo que a marca de tênis avalie sua relevância e competitividade no mercado.
## Melhorias Futuras no Projeto
- Adicionar mais fontes de dados: Magalu, Netshoes e Amazon