Files
pagodera/iconScript/README.md
T
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

4.9 KiB

TibiaWiki Scraper

Extrator de dados completo do TibiaWiki.br que extrai informações de todas as categorias de itens (Capacetes, Armaduras, Armas, etc.) e salva em banco SQLite local com imagens organizadas.

🎯 Funcionalidades

  • ✅ Extração completa de todas as categorias de itens
  • ✅ Extração de link específico ou múltiplos links via arquivo
  • ✅ Detecção automática de categoria baseada no título da página
  • ✅ Download e organização de imagens por categoria
  • ✅ Armazenamento em banco SQLite (uma tabela por categoria)
  • ✅ Pipeline de imagens customizado
  • ✅ Rate limiting e respeito ao robots.txt
  • ✅ Normalização automática de nomes (sem acentos, lowercase)
  • ✅ Validação de URLs e tratamento robusto de erros

📋 Pré-requisitos

  • Python 3.7+
  • pip

🚀 Instalação e Execução

1. Instalar dependências

pip install -r requirements.txt

2. Executar o spider

⚠️ IMPORTANTE: O site bloqueia requisições automatizadas. Use a versão com Selenium.

Opção A: Usando Selenium (RECOMENDADO)

Modo Completo (Todas as Categorias)

python main_selenium.py
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas"
# Criar arquivo links.txt com:
# https://www.tibiawiki.com.br/wiki/Espadas
# https://www.tibiawiki.com.br/wiki/Machados
# # Comentários são ignorados

python main_selenium.py --file links.txt

Modo Headless (sem interface gráfica)

python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas" --headless

Este script abre um navegador Chrome automaticamente e extrai os dados visualmente.

Opção B: Comando Scrapy (pode ter erro 403)

cd tibiawiki
scrapy crawl tibiawiki_items

📂 Estrutura de Saída

Após a execução, os dados serão salvos em:

data/
├── tibiawiki.db          # Banco SQLite com todas as tabelas
└── images/               # Imagens organizadas por categoria
    ├── capacetes/
    ├── armaduras/
    ├── espadas/
    └── ...

🗄️ Banco de Dados

Cada categoria de itens terá sua própria tabela no SQLite. Nome da tabela = nome da categoria normalizado (sem acentos, lowercase, com underscores).

Exemplo de queries:

-- Listar todas as tabelas
SELECT name FROM sqlite_master WHERE type='table';

-- Ver itens da categoria de capacetes
SELECT * FROM capacetes LIMIT 10;

-- Buscar item específico
SELECT * FROM espadas WHERE nome LIKE '%Fire Sword%';

-- Contar itens por categoria
SELECT 
    'capacetes' as categoria, 
    COUNT(*) as total 
FROM capacetes
UNION ALL
SELECT 'armaduras', COUNT(*) FROM armaduras;

⚙️ Configurações

Edite tibiawiki/settings.py para ajustar:

  • DOWNLOAD_DELAY: Delay entre requisições (padrão: 1.5s)
  • CONCURRENT_REQUESTS: Requisições simultâneas (padrão: 2)
  • SQLITE_DB_PATH: Caminho do banco (padrão: data/tibiawiki.db)
  • IMAGES_STORE: Caminho das imagens (padrão: data/images)

📝 Estrutura do Projeto

iconScript/
├── main.py                  # Script principal de execução
├── requirements.txt         # Dependências Python
├── scrapy.cfg              # Configuração do Scrapy
├── explore_structure.py    # Script de análise exploratória
└── tibiawiki/             # Projeto Scrapy
    ├── __init__.py
    ├── items.py           # Definição dos Items
    ├── pipelines.py       # Pipelines (SQLite + Imagens)
    ├── settings.py        # Configurações
    ├── middlewares.py    # Middlewares customizados
    ├── utils.py          # Funções utilitárias
    └── spiders/
        ├── __init__.py
        └── items_spider.py  # Spider principal

🔍 Análise Exploratória

Para analisar a estrutura do site antes do scraping:

python explore_structure.py

Isso gerará:

  • categories_mapping.json: Mapeamento de categorias encontradas
  • structure_analysis.json: Estrutura das tabelas de cada categoria

⚠️ Notas Importantes

  • O scraping pode demorar de 30min a 1h dependendo da quantidade de categorias
  • Todas as requisições respeitam rate limiting (delay de 1.5s)
  • O site está sendo respeitado com robots.txt habilitado
  • Imagens são baixadas e organizadas automaticamente por categoria

🐛 Troubleshooting

Erro 403 ao acessar o site:

  • O site pode estar bloqueando requisições. Aguarde alguns minutos e tente novamente.
  • Verifique se o User-Agent está sendo enviado corretamente.

Erro de módulo não encontrado:

  • Certifique-se de instalar todas as dependências: pip install -r requirements.txt
  • Verifique se está no diretório correto (iconScript/)

Banco de dados travado:

  • Certifique-se de que não há outro processo acessando o banco
  • Delete data/tibiawiki.db e rode novamente

📄 Licença

Este projeto é apenas para fins educacionais.