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.
This commit is contained in:
1 parent
44d7f8ce81
commit
2b790d8eb4
19 files changed
+2638
-173
No files matched your search
@@ -0,0 +1,370 @@
|
||||
# 🎯 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!
|
||||
|
||||
Reference in new issue
Block a user