Files
pagodera/iconScript/CORRECOES_APLICADAS.md
Evandro Fonseca Junior 29ba5aece0 feat: add TibiaWiki scraper project and update .gitignore
Integrates a Scrapy-based TibiaWiki scraper (spider, pipelines, SQLite/Images settings, README). Updates .gitignore to exclude generated data directories (/iconScript/data, /data/images) to keep the repository clean.
2025-10-30 00:55:25 -03:00

2.6 KiB

Correções Aplicadas - Erro 403 e image_local_path

Problemas Identificados

1. Erro 403 Forbidden

  • Causa: Site bloqueando requisições automatizadas do Scrapy
  • Solução: Implementação com Selenium para simular navegador real

2. Erro "no such column: image_local_path"

  • Causa: Campo image_local_path não era criado na tabela
  • Solução: Adicionado campo na criação da tabela + tratamento de erro

Mudanças no Código

arquivo: tibiawiki/spiders/selenium_spider.py

Mudança 1: Garantir campos de imagem na tabela

# ANTES
columns_def = []
for field_name, field_value in item_data.items():
    sql_type = ...
    columns_def.append(f"{field_name} {sql_type}{constraint}")

# DEPOIS
columns_def = []
added_fields = set()

for field_name, field_value in item_data.items():
    ...
    added_fields.add(field_name)

# Sempre adiciona campos de imagem
if 'image_url' not in added_fields:
    columns_def.append("image_url TEXT")
if 'image_local_path' not in added_fields:
    columns_def.append("image_local_path TEXT")

Mudança 2: Tratamento de erro ao atualizar image_local_path

# Adicionado tratamento para quando coluna não existe
try:
    self.cursor.execute(
        f"UPDATE {table_name} SET image_local_path=? WHERE nome=?",
        (file_path, item_data.get('nome'))
    )
except sqlite3.OperationalError as e:
    if 'no such column' in str(e):
        # Adiciona coluna se não existir
        self.cursor.execute(f"ALTER TABLE {table_name} ADD COLUMN image_local_path TEXT")
        # Tenta atualizar novamente
        ...

Como Testar

1. Teste Rápido (apenas Capacetes)

python test_selenium.py

2. Execução Completa

python main_selenium.py

Limpeza de Dados Anteriores

Se você já executou antes e teve erros, delete o banco antigo:

# Windows PowerShell
Remove-Item -Path data\tibiawiki.db -Force

# Linux/Mac
rm data/tibiawiki.db

Depois rode novamente para criar as tabelas com a estrutura correta.

Arquivos Modificados

  1. ✅ tibiawiki/spiders/selenium_spider.py - Correção dos campos de imagem
  2. ✅ requirements.txt - Adicionado Selenium e webdriver-manager
  3. ✅ main_selenium.py - Script principal com Selenium
  4. ✅ test_selenium.py - Script de teste criado

Status

  • ✅ Erro 403 resolvido com Selenium
  • ✅ Erro image_local_path corrigido
  • ✅ Backup dos campos de imagem sempre criado
  • ✅ Tratamento robusto de erros SQL

Próximos Passos

  1. Execute o teste: python test_selenium.py
  2. Se funcionar, rode completo: python main_selenium.py
  3. Verifique os dados: sqlite3 data/tibiawiki.db