332 lines
8.9 KiB
Markdown
Executable File
332 lines
8.9 KiB
Markdown
Executable File
# 🚗 GUIA CTF_CARSTUFF - Scraping Knowledge Base
|
|
|
|
**Cliente**: CTF_Carstuff
|
|
**Objetivo**: Construir knowledge base sobre estofamento automotivo
|
|
**Sites**: 18 sites + 2 subreddits Reddit
|
|
**Output**: `/media/ealmeida/Dados/GDrive/Cloud/Clientes_360/CTF_Carstuff/KB/Scrapper/sites/`
|
|
|
|
---
|
|
|
|
## ⚡ EXECUÇÃO RÁPIDA
|
|
|
|
### **Opção 1: TODOS os sites (Recomendado para primeira execução)**
|
|
```bash
|
|
cd /media/ealmeida/Dados/Dev/Scripts/scraper/
|
|
source .venv/bin/activate
|
|
python batch_scraper.py --config ctf_config.json --all
|
|
```
|
|
|
|
**Tempo estimado**: 2-4 horas
|
|
**Output**: 200-500 páginas em Markdown
|
|
|
|
---
|
|
|
|
## 🎯 EXECUÇÃO POR PRIORIDADE
|
|
|
|
### **Alta Prioridade (Sites principais - Executar primeiro)**
|
|
Sites incluídos:
|
|
- The Hog Ring (blog principal estofamento)
|
|
- TheSamba Main + Forum (VW clássicos)
|
|
- Portal dos Clássicos (fórum PT - mercado local)
|
|
|
|
```bash
|
|
# Criar config temporário apenas com high priority
|
|
python -c "
|
|
import json
|
|
with open('ctf_config.json') as f:
|
|
config = json.load(f)
|
|
high_priority = [s for s in config['sites'] if s.get('priority') == 'high']
|
|
config['sites'] = high_priority
|
|
with open('ctf_high_priority.json', 'w') as f:
|
|
json.dump(config, f, indent=2)
|
|
"
|
|
|
|
# Executar
|
|
python batch_scraper.py --config ctf_high_priority.json --all
|
|
```
|
|
|
|
### **Média Prioridade (Sites secundários)**
|
|
Sites incluídos:
|
|
- Sailrite, Albright Supply, Relicate
|
|
- Pelican Parts Forum (Porsche)
|
|
- MG Experience, Triumph, Alfa BB Forums
|
|
- Camira Fabrics, Sunbrella
|
|
|
|
```bash
|
|
# Filtrar apenas medium priority
|
|
python batch_scraper.py --config ctf_config.json --types wordpress forum ecommerce
|
|
```
|
|
|
|
### **Baixa Prioridade (Risco anti-bot - Executar por último)**
|
|
Sites incluídos:
|
|
- Cruisers Forum, Trawler Forum (marítimo)
|
|
- Vans Air Force (aviação)
|
|
- Keyston Bros, Ultrafabrics (possível anti-bot)
|
|
|
|
⚠️ **ATENÇÃO**: Estes sites podem falhar devido a proteções anti-bot.
|
|
**Solução**: Executar em horário de baixo tráfego (02:00-06:00)
|
|
|
|
---
|
|
|
|
## 📊 ESTRUTURA DE OUTPUT
|
|
|
|
```
|
|
/media/ealmeida/Dados/GDrive/Cloud/Clientes_360/CTF_Carstuff/KB/Scrapper/sites/
|
|
├── output_md/ # 📄 FASE 1: Markdown RAW (extração)
|
|
│ ├── thehogring_com/
|
|
│ ├── sailrite_com/
|
|
│ ├── reddit_Autoupholstery/
|
|
│ └── ...
|
|
│
|
|
├── output_cleaned/ # 🧹 FASE 2: Markdown LIMPO (após clean_md.py)
|
|
│ └── [mesma estrutura]
|
|
│
|
|
├── formatted/ # ✨ FASE 3: Formatado AI (após format_content.py)
|
|
│ └── [mesma estrutura]
|
|
│
|
|
└── logs/ # 📝 Logs e relatórios
|
|
├── batch_scraper_20251105_025256.log
|
|
└── batch_report_20251105_025256.json
|
|
```
|
|
|
|
---
|
|
|
|
## 🔄 PIPELINE COMPLETO (3 Fases)
|
|
|
|
### **FASE 1: Extração (Scraping)**
|
|
```bash
|
|
python batch_scraper.py --config ctf_config.json --all
|
|
```
|
|
**Output**: `output_md/` - Markdown bruto com todo conteúdo
|
|
|
|
### **FASE 2: Limpeza**
|
|
```bash
|
|
python clean_md.py \
|
|
/media/ealmeida/Dados/GDrive/Cloud/Clientes_360/CTF_Carstuff/KB/Scrapper/sites/output_md/ \
|
|
/media/ealmeida/Dados/GDrive/Cloud/Clientes_360/CTF_Carstuff/KB/Scrapper/sites/output_cleaned/
|
|
```
|
|
**Output**: `output_cleaned/` - Remove HTML residual, normaliza formatação
|
|
|
|
### **FASE 3: Formatação AI (Opcional)**
|
|
⚠️ **Requer**: API key OpenRouter em `.env`
|
|
|
|
```bash
|
|
# Editar format_content.py para apontar para diretório CTF
|
|
# Linha ~50: INPUT_DIR = "/media/ealmeida/Dados/GDrive/Cloud/Clientes_360/CTF_Carstuff/KB/Scrapper/sites/output_cleaned/"
|
|
# Linha ~51: OUTPUT_DIR = "/media/ealmeida/Dados/GDrive/Cloud/Clientes_360/CTF_Carstuff/KB/Scrapper/sites/formatted/"
|
|
|
|
python format_content.py
|
|
```
|
|
**Output**: `formatted/` - Conteúdo profissionalmente formatado
|
|
|
|
---
|
|
|
|
## 🤖 REDDIT (Opcional)
|
|
|
|
Para incluir Reddit (requer credenciais):
|
|
|
|
### **1. Criar credenciais Reddit**
|
|
1. Ir a: https://reddit.com/prefs/apps
|
|
2. Clicar "create app"
|
|
3. Tipo: "script"
|
|
4. Redirect URI: `http://localhost:8080`
|
|
5. Copiar `CLIENT_ID` e `CLIENT_SECRET`
|
|
|
|
### **2. Adicionar ao `.env`**
|
|
```bash
|
|
REDDIT_CLIENT_ID=your-client-id
|
|
REDDIT_CLIENT_SECRET=your-client-secret
|
|
REDDIT_USER_AGENT=CTF_Scraper/1.0 by YourUsername
|
|
```
|
|
|
|
### **3. Executar com Reddit**
|
|
```bash
|
|
# Apenas Reddit
|
|
python batch_scraper.py --config ctf_config.json --reddit-only
|
|
|
|
# Sites + Reddit
|
|
python batch_scraper.py --config ctf_config.json --all --include-reddit
|
|
```
|
|
|
|
**Subreddits configurados**:
|
|
- r/Autoupholstery
|
|
- r/upholstery
|
|
|
|
**Limite**: 50 posts/subreddit, ordenados por top (último ano)
|
|
|
|
---
|
|
|
|
## 📋 SITES CONFIGURADOS
|
|
|
|
### **🇵🇹 Sites Português (Prioridade Alta)**
|
|
- **Portal dos Clássicos** - `https://forum.portaldosclassicos.com`
|
|
Fórum PT sobre automóveis clássicos (mercado local)
|
|
|
|
### **🌐 Sites Principais (Prioridade Alta)**
|
|
- **The Hog Ring** - `https://www.thehogring.com/`
|
|
Blog principal sobre estofamento automotivo
|
|
- **TheSamba Main** - `https://thesamba.com`
|
|
Recurso sobre VW clássicos
|
|
- **TheSamba VW Forum** - `https://thesamba.com/vw/forum/`
|
|
Fórum VW - comunidade ativa
|
|
|
|
### **🛒 E-commerce (Prioridade Média)**
|
|
- Sailrite, Albright Supply, Relicate
|
|
- Camira Fabrics, Sunbrella (fornecedores tecidos)
|
|
|
|
### **💬 Fóruns Marca (Prioridade Média)**
|
|
- Pelican Parts (Porsche)
|
|
- MG Experience, Triumph, Alfa BB
|
|
|
|
### **⚓ Marítimo/Aviação (Prioridade Baixa)**
|
|
- Cruisers Forum, Trawler Forum (barcos)
|
|
- Vans Air Force (aviação)
|
|
|
|
### **⚠️ Anti-bot Risk (Prioridade Baixa)**
|
|
- Keyston Bros, Ultrafabrics (e-commerce com proteção)
|
|
|
|
---
|
|
|
|
## ⏱️ ESTIMATIVAS DE TEMPO
|
|
|
|
| Categoria | Sites | Páginas Estimadas | Tempo |
|
|
|-----------|-------|-------------------|-------|
|
|
| **Alta prioridade** | 4 sites | 100-200 páginas | 45-90min |
|
|
| **Média prioridade** | 9 sites | 150-250 páginas | 1.5-2.5h |
|
|
| **Baixa prioridade** | 5 sites | 50-100 páginas | 1-2h |
|
|
| **Reddit** | 2 subreddits | 100 posts | 2-5min |
|
|
| **TOTAL** | 18 + Reddit | 400-650 itens | 3-5h |
|
|
|
|
---
|
|
|
|
## 🔍 MONITORIZAÇÃO
|
|
|
|
### **Ver progresso em tempo real**:
|
|
```bash
|
|
tail -f /media/ealmeida/Dados/GDrive/Cloud/Clientes_360/CTF_Carstuff/KB/Scrapper/sites/logs/batch_scraper_*.log
|
|
```
|
|
|
|
### **Ver relatório final**:
|
|
```bash
|
|
cat /media/ealmeida/Dados/GDrive/Cloud/Clientes_360/CTF_Carstuff/KB/Scrapper/sites/logs/batch_report_*.json
|
|
```
|
|
|
|
Relatório inclui:
|
|
- Total sites processados
|
|
- Sites com sucesso vs falhados
|
|
- Número de páginas por site
|
|
- Erros detalhados
|
|
- Tempo total de execução
|
|
|
|
---
|
|
|
|
## ⚠️ SITES COM POSSÍVEIS PROBLEMAS
|
|
|
|
### **Anti-bot Forte**:
|
|
- ❌ **keystonbros.com** - E-commerce com proteção Cloudflare
|
|
- ❌ **ultrafabricsinc.com** - E-commerce com verificação JS
|
|
|
|
**Solução**: Executar em horário baixo tráfego (madrugada)
|
|
|
|
### **Muito Lento/Grande**:
|
|
- ⚠️ **cruisersforum.com** - Milhares de threads
|
|
- ⚠️ **trawlerforum.com** - Milhares de threads
|
|
|
|
**Solução**: Já configurado `max_depth=1` para limitar
|
|
|
|
### **Requer Validação URL**:
|
|
- ⚠️ Sites alemães (Autosattler.de, Lederzentrum)
|
|
- ⚠️ Sites espanhóis (Piel de Toro)
|
|
|
|
**Status**: Incluídos na config mas podem necessitar ajustes
|
|
|
|
---
|
|
|
|
## 🛠️ TROUBLESHOOTING
|
|
|
|
### **Erro: "Timeout"**
|
|
```bash
|
|
# Editar ctf_config.json, aumentar timeout:
|
|
"scraper_settings": {
|
|
"request_timeout": 120 # Aumentar de 60 para 120
|
|
}
|
|
```
|
|
|
|
### **Erro: "403 Forbidden"**
|
|
```bash
|
|
# Aumentar delays em ctf_config.json:
|
|
"scraper_settings": {
|
|
"politeness_delay": [5, 10] # Aumentar de [2,5] para [5,10]
|
|
}
|
|
```
|
|
|
|
### **Site específico falhando**
|
|
```bash
|
|
# Remover temporariamente do ctf_config.json
|
|
# Executar restantes sites
|
|
# Tentar site problemático individualmente depois
|
|
```
|
|
|
|
---
|
|
|
|
## 🎯 RECOMENDAÇÕES
|
|
|
|
### **Primeira Execução**:
|
|
1. ✅ Executar **apenas alta prioridade** primeiro
|
|
2. ✅ Validar output em `output_md/`
|
|
3. ✅ Se OK, executar **média prioridade**
|
|
4. ✅ Por último, **baixa prioridade** (madrugada)
|
|
|
|
### **Execução Programada**:
|
|
```bash
|
|
# Executar automaticamente todas as noites às 02:00
|
|
echo "0 2 * * * cd /media/ealmeida/Dados/Dev/Scripts/scraper && .venv/bin/python batch_scraper.py --config ctf_config.json --all" | crontab -
|
|
```
|
|
|
|
### **Backup**:
|
|
```bash
|
|
# Backup periódico do knowledge base
|
|
tar -czf kb_backup_$(date +%Y%m%d).tar.gz \
|
|
/media/ealmeida/Dados/GDrive/Cloud/Clientes_360/CTF_Carstuff/KB/Scrapper/sites/output_md/
|
|
```
|
|
|
|
---
|
|
|
|
## 📞 SUPORTE
|
|
|
|
- **Documentação geral**: `README.md`
|
|
- **Guia rápido**: `QUICKSTART.md`
|
|
- **Validação setup**: `python validate_setup.py`
|
|
- **Implementações**: `IMPLEMENTADO.md`
|
|
|
|
---
|
|
|
|
## 📈 PRÓXIMOS PASSOS
|
|
|
|
1. **Executar primeira extração**:
|
|
```bash
|
|
python batch_scraper.py --config ctf_config.json --all
|
|
```
|
|
|
|
2. **Validar resultados**:
|
|
```bash
|
|
ls -lh /media/ealmeida/Dados/GDrive/Cloud/Clientes_360/CTF_Carstuff/KB/Scrapper/sites/output_md/
|
|
```
|
|
|
|
3. **Limpar conteúdo** (Fase 2):
|
|
```bash
|
|
python clean_md.py [input] [output]
|
|
```
|
|
|
|
4. **Opcional: Formatar com AI** (Fase 3):
|
|
```bash
|
|
python format_content.py # Após configurar paths
|
|
```
|
|
|
|
---
|
|
|
|
**Status**: ✅ PRONTO PARA USO
|
|
**Última atualização**: 2025-11-05
|
|
**Author**: Descomplicar® Crescimento Digital
|
|
**Link**: https://descomplicar.pt
|