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.
371 lines
8.2 KiB
Markdown
371 lines
8.2 KiB
Markdown
# đŻ Guia: Scraping de Links EspecĂficos
|
|
|
|
## VisĂŁo Geral
|
|
|
|
O script `main_selenium.py` agora suporta trĂȘs modos de operação:
|
|
|
|
1. **Modo Completo**: Extrai todas as categorias (comportamento padrĂŁo)
|
|
2. **Modo Link Ănico**: Extrai apenas uma URL especĂfica
|
|
3. **Modo Arquivo**: Extrai mĂșltiplas URLs de um arquivo TXT
|
|
|
|
## đ Uso
|
|
|
|
### 1. Modo Completo
|
|
|
|
**Quando usar**: Primeira vez executando o scraper ou quando quiser atualizar todos os dados.
|
|
|
|
```bash
|
|
python main_selenium.py
|
|
```
|
|
|
|
Este modo:
|
|
- Acessa a pĂĄgina principal do TibiaWiki
|
|
- Detecta automaticamente todas as categorias disponĂveis
|
|
- Processa cada categoria em sequĂȘncia
|
|
- Tempo estimado: 30min - 1h
|
|
|
|
---
|
|
|
|
### 2. Modo Link Ănico
|
|
|
|
**Quando usar**: Quando uma categoria especĂfica teve problema no scraping inicial ou precisa ser atualizada.
|
|
|
|
```bash
|
|
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas"
|
|
```
|
|
|
|
Este modo:
|
|
- Valida a URL fornecida
|
|
- Carrega a pĂĄgina especificada
|
|
- Detecta automaticamente o nome da categoria (do H1 ou tĂtulo)
|
|
- Processa apenas essa categoria
|
|
- Tempo estimado: 1-5 min
|
|
|
|
**Exemplos de URLs vĂĄlidas:**
|
|
```bash
|
|
# Espadas
|
|
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas"
|
|
|
|
# Machados
|
|
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Machados"
|
|
|
|
# Capacetes
|
|
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Capacetes"
|
|
|
|
# Qualquer categoria vĂĄlida do TibiaWiki
|
|
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/NomeDaCategoria"
|
|
```
|
|
|
|
---
|
|
|
|
### 3. Modo Arquivo com MĂșltiplos Links
|
|
|
|
**Quando usar**: Quando vĂĄrias categorias precisam ser reprocessadas.
|
|
|
|
**Passo 1: Criar arquivo TXT**
|
|
|
|
Crie um arquivo (ex: `links.txt`) com uma URL por linha:
|
|
|
|
```txt
|
|
https://www.tibiawiki.com.br/wiki/Espadas
|
|
https://www.tibiawiki.com.br/wiki/Machados
|
|
# Esta linha Ă© um comentĂĄrio e serĂĄ ignorada
|
|
https://www.tibiawiki.com.br/wiki/Capacetes
|
|
https://www.tibiawiki.com.br/wiki/Armaduras
|
|
https://www.tibiawiki.com.br/wiki/Botas
|
|
```
|
|
|
|
**Regras do arquivo TXT:**
|
|
- Uma URL por linha
|
|
- Linhas vazias sĂŁo ignoradas
|
|
- Linhas começando com `#` são comentårios (ignoradas)
|
|
- Apenas URLs vĂĄlidas do TibiaWiki sĂŁo processadas
|
|
|
|
**Passo 2: Executar**
|
|
|
|
```bash
|
|
python main_selenium.py --file links.txt
|
|
```
|
|
|
|
Este modo:
|
|
- LĂȘ o arquivo TXT
|
|
- Valida cada URL
|
|
- Processa cada URL sequencialmente
|
|
- Mostra progresso (ex: "Processando URL 2/5")
|
|
- Tempo estimado: ~5-10 min por categoria
|
|
|
|
---
|
|
|
|
### 4. Modo Headless
|
|
|
|
**Quando usar**: Quando nĂŁo quer ver o navegador aberto (Ăștil para automação).
|
|
|
|
Adicione a flag `--headless` a qualquer um dos modos:
|
|
|
|
```bash
|
|
# Completo headless
|
|
python main_selenium.py --headless
|
|
|
|
# Link Ășnico headless
|
|
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas" --headless
|
|
|
|
# Arquivo headless
|
|
python main_selenium.py --file links.txt --headless
|
|
```
|
|
|
|
---
|
|
|
|
## đ Detecção AutomĂĄtica de Categoria
|
|
|
|
O script detecta automaticamente o nome da categoria da pĂĄgina usando esta ordem:
|
|
|
|
1. **H1 da pĂĄgina** (prioridade maior)
|
|
- Remove prefixos como "Categoria:", "Lista de", etc.
|
|
|
|
2. **TĂtulo da pĂĄgina (`<title>`)**
|
|
- Remove sufixo "- TibiaWiki"
|
|
|
|
3. **URL** (fallback)
|
|
- Extrai do path `/wiki/NomeDaCategoria`
|
|
|
|
4. **"custom"** (fallback final)
|
|
- Se nada funcionar, usa "custom"
|
|
|
|
**Exemplo de detecção:**
|
|
```
|
|
PĂĄgina: https://www.tibiawiki.com.br/wiki/Espadas
|
|
H1: "Lista de Espadas"
|
|
â Categoria detectada: "Espadas"
|
|
|
|
PĂĄgina: https://www.tibiawiki.com.br/wiki/Machados
|
|
TĂtulo: "Machados - TibiaWiki"
|
|
â Categoria detectada: "Machados"
|
|
```
|
|
|
|
---
|
|
|
|
## â
Validação de URLs
|
|
|
|
O script valida automaticamente todas as URLs:
|
|
|
|
### URLs VĂĄlidas â
|
|
- `https://www.tibiawiki.com.br/wiki/Espadas`
|
|
- `https://tibiawiki.com.br/wiki/Armaduras`
|
|
|
|
### URLs InvĂĄlidas â
|
|
- `http://www.tibiawiki.com.br/wiki/Espadas` (HTTP em vez de HTTPS)
|
|
- `https://example.com/wiki/Espadas` (domĂnio errado)
|
|
- `https://www.tibiawiki.com.br/page/Espadas` (sem `/wiki/`)
|
|
|
|
**Comportamento:**
|
|
- URLs invĂĄlidas sĂŁo ignoradas com um aviso
|
|
- O script continua processando URLs vĂĄlidas
|
|
- No modo arquivo, apenas URLs vĂĄlidas sĂŁo processadas
|
|
|
|
---
|
|
|
|
## đ SaĂda
|
|
|
|
### Estrutura de Pastas
|
|
|
|
```
|
|
data/
|
|
âââ tibiawiki.db # Banco SQLite
|
|
âââ images/
|
|
âââ espadas/
|
|
â âââ fire_sword.gif
|
|
â âââ magic_sword.gif
|
|
â âââ ...
|
|
âââ machados/
|
|
â âââ battleaxe.gif
|
|
â âââ ...
|
|
âââ ...
|
|
```
|
|
|
|
### Tabelas no Banco SQLite
|
|
|
|
Cada categoria vira uma tabela:
|
|
|
|
```sql
|
|
-- Ver todas as tabelas
|
|
SELECT name FROM sqlite_master WHERE type='table';
|
|
|
|
-- Ver itens de espadas
|
|
SELECT * FROM espadas;
|
|
|
|
-- Contar itens
|
|
SELECT COUNT(*) FROM espadas;
|
|
```
|
|
|
|
---
|
|
|
|
## â ïž Tratamento de Erros
|
|
|
|
### Erros Comuns
|
|
|
|
**1. Arquivo nĂŁo encontrado**
|
|
```
|
|
Erro: Arquivo nĂŁo encontrado: links.txt
|
|
```
|
|
**Solução**: Verifique o caminho do arquivo
|
|
|
|
**2. Nenhuma URL vĂĄlida**
|
|
```
|
|
Erro: Nenhuma URL vĂĄlida encontrada no arquivo!
|
|
```
|
|
**Solução**: Verifique as URLs no arquivo
|
|
|
|
**3. Timeout esperando elementos**
|
|
```
|
|
Warning: Timeout esperando elementos
|
|
```
|
|
**Solução**: Pågina pode não ter tabelas ou estå muito lenta. Continue aguardando.
|
|
|
|
**4. Erro ao carregar pĂĄgina**
|
|
```
|
|
Erro ao carregar pĂĄgina: Connection error
|
|
```
|
|
**Solução**: Verifique sua conexão com internet
|
|
|
|
---
|
|
|
|
## đŻ Casos de Uso PrĂĄticos
|
|
|
|
### Caso 1: Primeira Execução Completa
|
|
|
|
```bash
|
|
# Executa tudo pela primeira vez
|
|
python main_selenium.py
|
|
```
|
|
|
|
---
|
|
|
|
### Caso 2: Categoria EspecĂfica Com Bug
|
|
|
|
VocĂȘ notou que algumas espadas nĂŁo foram baixadas corretamente:
|
|
|
|
```bash
|
|
# Reprocessa apenas espadas
|
|
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas"
|
|
```
|
|
|
|
---
|
|
|
|
### Caso 3: MĂșltiplas Categorias
|
|
|
|
VocĂȘ precisa atualizar 3 categorias especĂficas:
|
|
|
|
```bash
|
|
# Criar links.txt
|
|
cat > links.txt << EOF
|
|
https://www.tibiawiki.com.br/wiki/Espadas
|
|
https://www.tibiawiki.com.br/wiki/Machados
|
|
https://www.tibiawiki.com.br/wiki/Capacetes
|
|
EOF
|
|
|
|
# Executar
|
|
python main_selenium.py --file links.txt
|
|
```
|
|
|
|
---
|
|
|
|
### Caso 4: Automação com Cron/Task Scheduler
|
|
|
|
Quer atualizar uma categoria especĂfica toda semana?
|
|
|
|
```bash
|
|
# Windows Task Scheduler
|
|
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas" --headless
|
|
|
|
# Linux Cron
|
|
# Adicionar ao crontab:
|
|
0 2 * * 0 cd /path/to/iconScript && python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas" --headless
|
|
```
|
|
|
|
---
|
|
|
|
## đ Performance
|
|
|
|
### Tempos Estimados
|
|
|
|
| Modo | Tempo |
|
|
|------|-------|
|
|
| Completo (30 categorias) | 30min - 1h |
|
|
| Link Ășnico | 1-5 min |
|
|
| Arquivo (5 links) | 5-15 min |
|
|
| Arquivo (10 links) | 10-30 min |
|
|
|
|
### Fatores que Afetam
|
|
|
|
- Velocidade da internet
|
|
- Carga do servidor TibiaWiki
|
|
- NĂșmero de itens por categoria
|
|
- Headless vs. normal (headless Ă© ~10% mais rĂĄpido)
|
|
|
|
---
|
|
|
|
## đ Ajuda Adicional
|
|
|
|
### Ver todas as opçÔes
|
|
|
|
```bash
|
|
python main_selenium.py --help
|
|
```
|
|
|
|
SaĂda:
|
|
```
|
|
usage: main_selenium.py [-h] [--url URL] [--file FILE] [--headless]
|
|
|
|
TibiaWiki Scraper - Extrai dados e imagens do TibiaWiki
|
|
|
|
optional arguments:
|
|
-h, --help show this help message and exit
|
|
--url URL URL especĂfica para fazer scraping
|
|
--file FILE Arquivo TXT com mĂșltiplas URLs
|
|
--headless Executar Chrome em modo headless
|
|
|
|
Exemplos de uso:
|
|
# Modo completo
|
|
python main_selenium.py
|
|
|
|
# Link especĂfico
|
|
python main_selenium.py --url "https://www.tibiawiki.com.br/wiki/Espadas"
|
|
|
|
# MĂșltiplos links via arquivo
|
|
python main_selenium.py --file links.txt
|
|
```
|
|
|
|
---
|
|
|
|
## â
Checklist de Uso
|
|
|
|
Antes de executar:
|
|
|
|
- [ ] Python 3.7+ instalado
|
|
- [ ] DependĂȘncias instaladas: `pip install -r requirements.txt`
|
|
- [ ] Chrome instalado no sistema
|
|
- [ ] Estar no diretĂłrio correto: `cd iconScript`
|
|
- [ ] (Modo arquivo) Arquivo TXT criado com URLs vĂĄlidas
|
|
- [ ] (Modo URL Ășnica) URL vĂĄlida formatada corretamente
|
|
|
|
Durante execução:
|
|
|
|
- [ ] Chrome abre automaticamente
|
|
- [ ] Navegador navega pelas pĂĄginas
|
|
- [ ] Mensagens de progresso aparecem no terminal
|
|
- [ ] Contador de itens incrementa
|
|
|
|
Após execução:
|
|
|
|
- [ ] Verificar banco SQLite: `sqlite3 data/tibiawiki.db`
|
|
- [ ] Verificar imagens: `ls data/images/`
|
|
- [ ] Testar queries SQL
|
|
- [ ] Verificar logs no terminal
|
|
|
|
---
|
|
|
|
## đ Pronto!
|
|
|
|
Agora vocĂȘ pode fazer scraping de links especĂficos sem precisar reprocessar tudo!
|
|
|