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.
This commit is contained in:
1 parent
bf12f2c6f1
commit
29ba5aece0
27 files changed
+1702
-4
No files matched your search
@@ -0,0 +1,147 @@
|
||||
# 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.
|
||||
|
||||
Reference in new issue
Block a user