once-webscraper 0.3.5
Uma biblioteca simples para web scraping de fornecedores
Requires Python: >=3.6

# Once WebScraper

Uma biblioteca simples para web scraping de fornecedores.

## InstalaÃ§Ã£o

```bash
pip install once-webscraper
```

## Uso BÃ¡sico

```python
# Importando a biblioteca
from once_webscraper import get_belli

# URL de exemplo de um produto da Belli Kids
url = "https://www.bellikids.com.br/conjunto-junino-banana-club-sofia-xadrez-preto"

# Extrair todos os dados (comportamento padrÃ£o)
produto_completo = get_belli(url)

# Extrair apenas imagens
produto_imagens = get_belli(url, tipo="images")

# Extrair apenas informaÃ§Ãµes bÃ¡sicas
produto_basico = get_belli(url, tipo="basic_info")

# Extrair mÃºltiplos tipos de dados
produto_parcial = get_belli(url, tipo=["basic_info", "stock"])

# Exemplo de uso com tratamento de erros
try:
    # Acessando os dados
    nome = produto_completo["produto"]["informacoes_basicas"]["nome"]
    preco = produto_completo["produto"]["informacoes_basicas"]["preco"]
    marca = produto_completo["produto"]["informacoes_basicas"]["marca"]
    
    # Acessando estoque
    estoque_total = produto_completo["produto"]["estoque"]["total"]
    variacoes = produto_completo["produto"]["estoque"]["variacoes"]
    
    # Acessando imagens
    imagens = produto_completo["produto"]["midia"]["imagens"]
    
    # Exemplo de impressÃ£o dos dados
    print(f"Nome: {nome}")
    print(f"PreÃ§o: R$ {preco:.2f}")
    print(f"Marca: {marca}")
    print(f"Estoque Total: {estoque_total}")
    
    # Imprimindo variaÃ§Ãµes disponÃ­veis
    print("\nVariaÃ§Ãµes disponÃ­veis:")
    for var in variacoes:
        print(f"Tamanho {var['tamanho']}: {var['quantidade']} unidades")

except URLInvalidaError as e:
    print(f"Erro: {e}")
except Exception as e:
    print(f"Erro ao extrair dados: {e}")
```

## Tipos de ExtraÃ§Ã£o DisponÃ­veis

- `"all"`: Extrai todos os dados (padrÃ£o)
- `"basic_info"`: Apenas informaÃ§Ãµes bÃ¡sicas (nome, SKU, marca, preÃ§o)
- `"description"`: Apenas descriÃ§Ã£o
- `"images"`: Apenas imagens
- `"stock"`: Apenas estoque

## Formato do Retorno

O retorno Ã© um dicionÃ¡rio que contÃ©m apenas as seÃ§Ãµes solicitadas. Por exemplo:

### ExtraÃ§Ã£o Completa (`tipo="all"`):
```python
{
    "produto": {
        "informacoes_basicas": {
            "nome": str,
            "sku": str,
            "marca": str,
            "preco": float
        },
        "descricao": {
            "texto": str
        },
        "midia": {
            "imagens": {
                "Image_1": str,  # URL da imagem
                "Image_2": str,
                # ...
            }
        },
        "estoque": {
            "total": int,
            "variacoes": [
                {
                    "sku": str,
                    "tamanho": str,
                    "quantidade": int
                },
                # ...
            ]
        },
        "metadata": {
            "fonte": str,
            "url_origem": str,
            "data_extracao": str  # ISO format
        }
    }
}
```

### ExtraÃ§Ã£o Parcial (exemplo com `tipo="images"`):
```python
{
    "produto": {
        "midia": {
            "imagens": {
                "Image_1": str,  # URL da imagem
                "Image_2": str,
                # ...
            }
        },
        "metadata": {
            "fonte": str,
            "url_origem": str,
            "data_extracao": str
        }
    }
}
```

## Funcionalidades

- ExtraÃ§Ã£o seletiva de dados (escolha quais dados extrair)
- ValidaÃ§Ã£o automÃ¡tica de URLs
- Retorno em formato JSON padronizado
- Tratamento de erros para URLs invÃ¡lidas
- ExtraÃ§Ã£o automÃ¡tica de:
  - InformaÃ§Ãµes bÃ¡sicas (nome, SKU, marca, preÃ§o)
  - DescriÃ§Ã£o do produto
  - Imagens em alta resoluÃ§Ã£o
  - Estoque por tamanho
  - Metadados da extraÃ§Ã£o