Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

Product Scraper

Descarga automatizada de imágenes y datos de productos desde tiendas WooCommerce

Python BeautifulSoup Pandas License


Extrae todas las imágenes de la galería, datos del producto (nombre, SKU, descripción) y genera un resumen en Excel. Soporta descarga incremental: solo procesa productos nuevos.


Tabla de Contenidos


Caracteristicas

Característica Descripción
Descarga completa de galería Extrae todas las imágenes del producto, no solo la principal
Descarga incremental Detecta productos ya descargados y los omite automáticamente
Redimensionado automático Todas las imágenes se normalizan al tamaño configurado (default: 1000x1000)
Resumen en Excel Genera un .xlsx con nombre, SKU, carpeta, cantidad de imágenes, descripción y link
Configuración externa URLs en archivo de texto, parámetros en JSON; sin tocar código
Manejo robusto de errores Logging estructurado, reintentos y fallbacks (ej. Excel abierto)

Requisitos

  • Python 3.12 o superior
  • Conexión a internet
  • Sistema operativo: Windows / macOS / Linux

Instalacion

1. Clonar el repositorio
git clone https://github.com/tu-usuario/product-scraper.git
cd product-scraper
2. Crear entorno virtual
python -m venv venv

Activar en Windows:

venv\Scripts\activate

Activar en macOS/Linux:

source venv/bin/activate
3. Instalar dependencias
pip install -r requirements.txt

Uso

Ejecución básica

python main.py

Con archivo de configuración personalizado

python main.py --config ruta/al/config.json

Agregar nuevos productos

Edita el archivo links.txt y agrega las URLs, una por línea:

# Bebidas
https://ejemplo.com/tienda/bebidas/termo-x/

# Morrales
https://ejemplo.com/tienda/morrales/bolsa-y/
https://ejemplo.com/tienda/morrales/morral-z/

Las líneas vacías y los comentarios (que empiezan con #) se ignoran automáticamente.

Ejecuta de nuevo y solo se descargarán los productos nuevos.


Estructura del Proyecto

product-scraper/
├── config/
│   └── productos.json       # Parámetros de configuración
├── src/
│   ├── __init__.py
│   ├── scraper.py           # Lógica de extracción de datos
│   └── utils.py             # Utilidades (imágenes, archivos)
├── main.py                  # Punto de entrada
├── links.txt                # URLs de productos (una por línea)
├── requirements.txt         # Dependencias de Python
├── .gitignore
└── README.md
Descripción de módulos
Módulo Responsabilidad
main.py Orquesta el flujo: carga config, itera productos, genera Excel
src/scraper.py Extrae datos del HTML: nombre, SKU, descripción, URLs de la galería
src/utils.py Funciones reutilizables: sanitizar nombres, descargar/redimensionar imágenes

Configuracion

config/productos.json

{
    "medidas": [1000, 1000],
    "carpeta_salida": "FOTOS_PRODUCTOS",
    "calidad_jpeg": 90,
    "archivo_links": "links.txt"
}
Parámetros disponibles
Parámetro Tipo Default Descripción
medidas [ancho, alto] [1000, 1000] Tamaño final de cada imagen en píxeles
carpeta_salida string "FOTOS_PRODUCTOS" Nombre de la carpeta donde se guardan los productos
calidad_jpeg int (1-100) 90 Calidad de compresión JPEG
archivo_links string "links.txt" Ruta al archivo con las URLs de productos

Salida

Al ejecutar el scraper, se genera la siguiente estructura:

FOTOS_PRODUCTOS/
├── PRODUCTO_A/
│   ├── SKU_PRODUCTO_A_01.jpg
│   ├── SKU_PRODUCTO_A_02.jpg
│   └── SKU_PRODUCTO_A_03.jpg
├── PRODUCTO_B/
│   ├── SKU_PRODUCTO_B_01.jpg
│   └── SKU_PRODUCTO_B_02.jpg
├── ...
└── Resumen_General.xlsx
Contenido del Excel
Columna Descripción
Producto Nombre completo del producto
SKU Código del producto
Carpeta Nombre de la subcarpeta
Imágenes Cantidad descargada (ej. 14/14 o 5 (ya existían))
Descripción Descripción corta del producto
Link URL original del producto

Ejemplo de log

12:40:30 | INFO     | [START] Iniciando scraper -- 20 producto(s)
12:40:33 | INFO     | [OK] TERMO ICED -- 15/15 imagenes descargadas
12:40:35 | INFO     | [SKIP] Ya descargado (9 fotos): BOLSA QUEEN
12:40:58 | INFO     | [EXCEL] Resumen generado: FOTOS_PRODUCTOS\Resumen_General.xlsx
12:40:58 | INFO     | [DONE] Proceso terminado -- 20/20 productos exitosos

Contribuir

Las contribuciones son bienvenidas. Algunas ideas:

  • Soporte para otras plataformas (Shopify, PrestaShop)
  • Descarga en paralelo con hilos/async
  • Interfaz gráfica (GUI)
  • Exportar a CSV además de Excel
  • Filtro por categoría de producto
Pasos para contribuir
  1. Haz un fork del repositorio
  2. Crea una rama para tu feature: git checkout -b feature/nueva-funcionalidad
  3. Realiza tus cambios y haz commit: git commit -m "Agrega nueva funcionalidad"
  4. Sube los cambios: git push origin feature/nueva-funcionalidad
  5. Abre un Pull Request

Licencia

Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.


Desarrollado con Python

Reportar un Bug · Solicitar Feature

# ecommerce-catalog-scraper

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages