Files
pagodera/iconScript/SCRAPING_LINKS_ESPECIFICOS.md
Evandro Fonseca Junior 2b790d8eb4 feat(library): add vocation filter, normalize categories, improve grid layout
Added vocation state and included it in query string builder, updated onFilter to accept a vocation parameter, improved grid layout with grid flow classes, normalized category names for consistent item icons, and refined stats mapping to handle type safety.
2025-10-30 18:44:52 -03:00

371 lines
8.2 KiB
Markdown

# 🎯 Guia: Scraping de Links Específicos
## VisĂŁo Geral
O script `main_selenium.py` agora suporta trĂȘs modos de operação:
1. **Modo Completo**: Extrai todas as categorias (comportamento padrĂŁo)
2. **Modo Link Único**: Extrai apenas uma URL específica
3. **Modo Arquivo**: Extrai mĂșltiplas URLs de um arquivo TXT
## 📚 Uso
### 1. Modo Completo
**Quando usar**: Primeira vez executando o scraper ou quando quiser atualizar todos os dados.
```bash
python main_selenium.py
```
Este modo:
- Acessa a pĂĄgina principal do TibiaWiki
- Detecta automaticamente todas as categorias disponĂ­veis
- Processa cada categoria em sequĂȘncia
- Tempo estimado: 30min - 1h
---
### 2. Modo Link Único
**Quando usar**: Quando uma categoria especĂ­fica teve problema no scraping inicial ou precisa ser atualizada.
```bash
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas"
```
Este modo:
- Valida a URL fornecida
- Carrega a pĂĄgina especificada
- Detecta automaticamente o nome da categoria (do H1 ou tĂ­tulo)
- Processa apenas essa categoria
- Tempo estimado: 1-5 min
**Exemplos de URLs vĂĄlidas:**
```bash
# Espadas
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas"
# Machados
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Machados"
# Capacetes
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Capacetes"
# Qualquer categoria vĂĄlida do TibiaWiki
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/NomeDaCategoria"
```
---
### 3. Modo Arquivo com MĂșltiplos Links
**Quando usar**: Quando vĂĄrias categorias precisam ser reprocessadas.
**Passo 1: Criar arquivo TXT**
Crie um arquivo (ex: `links.txt`) com uma URL por linha:
```txt
https://www.tibiawiki.com.br/wiki/Espadas
https://www.tibiawiki.com.br/wiki/Machados
# Esta linha Ă© um comentĂĄrio e serĂĄ ignorada
https://www.tibiawiki.com.br/wiki/Capacetes
https://www.tibiawiki.com.br/wiki/Armaduras
https://www.tibiawiki.com.br/wiki/Botas
```
**Regras do arquivo TXT:**
- Uma URL por linha
- Linhas vazias sĂŁo ignoradas
- Linhas começando com `#` são comentårios (ignoradas)
- Apenas URLs vĂĄlidas do TibiaWiki sĂŁo processadas
**Passo 2: Executar**
```bash
python main_selenium.py --file links.txt
```
Este modo:
- LĂȘ o arquivo TXT
- Valida cada URL
- Processa cada URL sequencialmente
- Mostra progresso (ex: "Processando URL 2/5")
- Tempo estimado: ~5-10 min por categoria
---
### 4. Modo Headless
**Quando usar**: Quando nĂŁo quer ver o navegador aberto (Ăștil para automação).
Adicione a flag `--headless` a qualquer um dos modos:
```bash
# Completo headless
python main_selenium.py --headless
# Link Ășnico headless
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas" --headless
# Arquivo headless
python main_selenium.py --file links.txt --headless
```
---
## 🔍 Detecção Automática de Categoria
O script detecta automaticamente o nome da categoria da pĂĄgina usando esta ordem:
1. **H1 da pĂĄgina** (prioridade maior)
- Remove prefixos como "Categoria:", "Lista de", etc.
2. **TĂ­tulo da pĂĄgina (`<title>`)**
- Remove sufixo "- TibiaWiki"
3. **URL** (fallback)
- Extrai do path `/wiki/NomeDaCategoria`
4. **"custom"** (fallback final)
- Se nada funcionar, usa "custom"
**Exemplo de detecção:**
```
PĂĄgina: https://www.tibiawiki.com.br/wiki/Espadas
H1: "Lista de Espadas"
→ Categoria detectada: "Espadas"
PĂĄgina: https://www.tibiawiki.com.br/wiki/Machados
TĂ­tulo: "Machados - TibiaWiki"
→ Categoria detectada: "Machados"
```
---
## ✅ Validação de URLs
O script valida automaticamente todas as URLs:
### URLs Válidas ✓
- `https://www.tibiawiki.com.br/wiki/Espadas`
- `https://tibiawiki.com.br/wiki/Armaduras`
### URLs Inválidas ✗
- `http://www.tibiawiki.com.br/wiki/Espadas` (HTTP em vez de HTTPS)
- `https://example.com/wiki/Espadas` (domĂ­nio errado)
- `https://www.tibiawiki.com.br/page/Espadas` (sem `/wiki/`)
**Comportamento:**
- URLs invĂĄlidas sĂŁo ignoradas com um aviso
- O script continua processando URLs vĂĄlidas
- No modo arquivo, apenas URLs vĂĄlidas sĂŁo processadas
---
## 📊 Saída
### Estrutura de Pastas
```
data/
├── tibiawiki.db # Banco SQLite
└── images/
├── espadas/
│ ├── fire_sword.gif
│ ├── magic_sword.gif
│ └── ...
├── machados/
│ ├── battleaxe.gif
│ └── ...
└── ...
```
### Tabelas no Banco SQLite
Cada categoria vira uma tabela:
```sql
-- Ver todas as tabelas
SELECT name FROM sqlite_master WHERE type='table';
-- Ver itens de espadas
SELECT * FROM espadas;
-- Contar itens
SELECT COUNT(*) FROM espadas;
```
---
## ⚠ Tratamento de Erros
### Erros Comuns
**1. Arquivo nĂŁo encontrado**
```
Erro: Arquivo nĂŁo encontrado: links.txt
```
**Solução**: Verifique o caminho do arquivo
**2. Nenhuma URL vĂĄlida**
```
Erro: Nenhuma URL vĂĄlida encontrada no arquivo!
```
**Solução**: Verifique as URLs no arquivo
**3. Timeout esperando elementos**
```
Warning: Timeout esperando elementos
```
**Solução**: Pågina pode não ter tabelas ou estå muito lenta. Continue aguardando.
**4. Erro ao carregar pĂĄgina**
```
Erro ao carregar pĂĄgina: Connection error
```
**Solução**: Verifique sua conexão com internet
---
## 🎯 Casos de Uso Práticos
### Caso 1: Primeira Execução Completa
```bash
# Executa tudo pela primeira vez
python main_selenium.py
```
---
### Caso 2: Categoria EspecĂ­fica Com Bug
VocĂȘ notou que algumas espadas nĂŁo foram baixadas corretamente:
```bash
# Reprocessa apenas espadas
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas"
```
---
### Caso 3: MĂșltiplas Categorias
VocĂȘ precisa atualizar 3 categorias especĂ­ficas:
```bash
# Criar links.txt
cat > links.txt << EOF
https://www.tibiawiki.com.br/wiki/Espadas
https://www.tibiawiki.com.br/wiki/Machados
https://www.tibiawiki.com.br/wiki/Capacetes
EOF
# Executar
python main_selenium.py --file links.txt
```
---
### Caso 4: Automação com Cron/Task Scheduler
Quer atualizar uma categoria especĂ­fica toda semana?
```bash
# Windows Task Scheduler
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas" --headless
# Linux Cron
# Adicionar ao crontab:
0 2 * * 0 cd /path/to/iconScript && python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas" --headless
```
---
## 🚀 Performance
### Tempos Estimados
| Modo | Tempo |
|------|-------|
| Completo (30 categorias) | 30min - 1h |
| Link Ășnico | 1-5 min |
| Arquivo (5 links) | 5-15 min |
| Arquivo (10 links) | 10-30 min |
### Fatores que Afetam
- Velocidade da internet
- Carga do servidor TibiaWiki
- NĂșmero de itens por categoria
- Headless vs. normal (headless Ă© ~10% mais rĂĄpido)
---
## 📝 Ajuda Adicional
### Ver todas as opçÔes
```bash
python main_selenium.py --help
```
SaĂ­da:
```
usage: main_selenium.py [-h] [--url URL] [--file FILE] [--headless]
TibiaWiki Scraper - Extrai dados e imagens do TibiaWiki
optional arguments:
-h, --help show this help message and exit
--url URL URL especĂ­fica para fazer scraping
--file FILE Arquivo TXT com mĂșltiplas URLs
--headless Executar Chrome em modo headless
Exemplos de uso:
# Modo completo
python main_selenium.py
# Link especĂ­fico
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas"
# MĂșltiplos links via arquivo
python main_selenium.py --file links.txt
```
---
## ✅ Checklist de Uso
Antes de executar:
- [ ] Python 3.7+ instalado
- [ ] DependĂȘncias instaladas: `pip install -r requirements.txt`
- [ ] Chrome instalado no sistema
- [ ] Estar no diretĂłrio correto: `cd iconScript`
- [ ] (Modo arquivo) Arquivo TXT criado com URLs vĂĄlidas
- [ ] (Modo URL Ășnica) URL vĂĄlida formatada corretamente
Durante execução:
- [ ] Chrome abre automaticamente
- [ ] Navegador navega pelas pĂĄginas
- [ ] Mensagens de progresso aparecem no terminal
- [ ] Contador de itens incrementa
Após execução:
- [ ] Verificar banco SQLite: `sqlite3 data/tibiawiki.db`
- [ ] Verificar imagens: `ls data/images/`
- [ ] Testar queries SQL
- [ ] Verificar logs no terminal
---
## 🎉 Pronto!
Agora vocĂȘ pode fazer scraping de links especĂ­ficos sem precisar reprocessar tudo!