# 🎯 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 (`
`)**
- 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!