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.
148 lines
4.2 KiB
Markdown
148 lines
4.2 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
|
|
- ✅ 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)
|
|
|
|
## 📋 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)**
|
|
```bash
|
|
python main_selenium.py
|
|
```
|
|
|
|
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.
|
|
|