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