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.
8.2 KiB
🎯 Guia: Scraping de Links Específicos
Visão Geral
O script main_selenium.py agora suporta três modos de operação:
- Modo Completo: Extrai todas as categorias (comportamento padrão)
- Modo Link Único: Extrai apenas uma URL específica
- 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.
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.
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:
# 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:
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
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:
# 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:
-
H1 da página (prioridade maior)
- Remove prefixos como "Categoria:", "Lista de", etc.
-
Título da página (
<title>)- Remove sufixo "- TibiaWiki"
-
URL (fallback)
- Extrai do path
/wiki/NomeDaCategoria
- Extrai do path
-
"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/Espadashttps://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:
-- 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
# 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:
# 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:
# 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?
# 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
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!