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

173 lines
4.9 KiB
Markdown

# 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
```bash
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)
```bash
python main_selenium.py
```
### Modo Link Específico
```bash
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas"
```
### Modo Múltiplos Links via Arquivo
```bash
# 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)
```bash
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)**
```bash
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:**
```sql
-- 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:
```bash
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.