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

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:

  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.

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

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"

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:

  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:

-- 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!