DesarrolloProtección de pagoDetalles
- Los cambios dentro del paquete son gratuitos.
- Si no responde en los 3 días siguientes a la entrega, el trabajo se acepta automáticamente.
El dinero queda reservado al pagar y solo se libera cuando usted acepta el trabajo.

Ejemplo de resultado
Parser del catálogo de un proveedor de herramientas de jardín a Excel
Cómo queda el resultado
| Referencia | Nombre | Precio | Disponible | Peso | Foto |
|---|---|---|---|---|---|
| GT-1042 | Tijeras de podar, 20 mm | 18,90 | Sí | 0,24 kg | …/gt-1042.jpg |
| GT-1187 | Sierra plegable, 210 mm | 24,50 | Sí | 0,31 kg | …/gt-1187.jpg |
| GT-2210 | Tijeras para setos, hoja ondulada | 39,00 | No | 1,10 kg | …/gt-2210.jpg |
| GT-3305 | Pala de mano, acero inoxidable | 9,80 | Sí | 0,18 kg | …/gt-3305.jpg |
| GT-4120 | Manguera de jardín 25 m, 1/2" | 42,00 | Sí | 2,90 kg | …/gt-4120.jpg |
El archivo del ejemplo tiene 1.236 productos de 52 páginas de lista.
Una parte del código
def product_links(list_url: str) -> Iterator[str]:
"""Enlaces a las páginas de producto de todas las páginas de la lista, siguiendo 'Siguiente'."""
url: str | None = list_url
while url:
page = fetch(url)
for card in page.select("div.product-card a.title"):
yield urljoin(url, card["href"])
next_link = page.select_one("a.pagination-next")
url = urljoin(url, next_link["href"]) if next_link else None
def fetch(url: str) -> BeautifulSoup:
"""Una página abierta, a un ritmo prudente: una pausa entre peticiones y algunos reintentos si hay errores."""
for attempt in range(3):
time.sleep(settings.delay_seconds)
response = session.get(url, timeout=30)
if response.status_code == 200:
return BeautifulSoup(response.text, "html.parser")
log.warning("%s respondió %s, intento %d de 3", url, response.status_code, attempt + 1)
raise ScraperError(f"{url} no se abrió tras 3 intentos")
Archivos: un archivo ZIP con scraper.py, settings.ini (la página inicial, la pausa entre peticiones, el nombre del archivo), requirements.txt y un README sobre cómo instalarlo y ejecutarlo. Solo lee páginas abiertas, una cada 2 segundos, y antes consulta el robots.txt de la web. El cliente lo ejecuta en su propio ordenador.
Cliente: una tienda de jardinería en línea que revende las herramientas de un proveedor; el proveedor tiene un catálogo abierto en su web, pero ningún archivo con la lista de precios. Tarea: recorrer las páginas de lista del catálogo, abrir cada página de producto y guardar en Excel la referencia, el nombre, el precio, la disponibilidad, el peso y el enlace de la foto principal, para comparar precios una vez por semana.
El cliente y todos los datos son ficticios.
Acerca de este servicio
Este parser lee las páginas públicas de productos de un competidor y pone sus precios en una tabla que puede comparar con los suyos: nombre del producto, código, precio, precio anterior, descuento, disponibilidad y enlace, con la fecha de la comprobación. Díganos la web, enlaces a una categoría y a una página de producto, los campos en el orden de su tabla y una o dos de esas páginas guardadas desde su navegador. Escribimos el código en Python según su estructura real, con un archivo de configuración y un README. Lo ejecuta en su ordenador cuando quiera precios actualizados, y la tabla le llega directamente a usted. Lee solo páginas abiertas a un ritmo prudente y nunca inicia sesión, ni se salta captchas o protecciones, ni recoge datos personales. Usted decide si las condiciones de la web lo permiten, y un cambio posterior de su estructura requiere una actualización.
Qué incluye
- Qué recibeUn archivo ZIP con el código Python, un archivo de configuración y un README con instrucciones paso a paso; el código también se muestra en la página del pedido.
- Columnas de preciosPrecio, precio anterior y descuento como números separados
- Códigos para cruzarEl código o el código de barras del competidor, cuando la página lo muestra
- Fecha de cada comprobaciónCada fila lleva la fecha en que se recogió
- Ritmo prudenteUna pausa entre páginas que usted fija
- Se ejecuta en su ordenadorWindows, macOS o Linux; vuelva a ejecutarlo para tener precios actualizados
Cómo funciona
- 1PáginasUsted da la web del competidor, una categoría y una página de producto guardada
- 2ParserEscribimos el código según esas páginas y la guía para ejecutarlo
- 3EjecuciónLo ejecuta y compara las primeras filas con la web
- 4CambiosPide cambios dentro de su paquete y nos envía cualquier mensaje de error
Qué necesitamos de usted
La web del competidor y las páginas exactas: un enlace a una categoría y a una página de producto, y cuántos productos hay aproximadamente. Los campos que necesita en el orden de su tabla, p. ej., nombre, código, precio, precio anterior, disponibilidad, enlace. Una o dos de esas páginas guardadas desde su navegador como HTML (Archivo > Guardar página como) o capturas. CSV o Excel, y dónde lo ejecutará.
Le preguntaremos:
- ¿Qué web y qué páginas del competidor?
- Los campos que necesita
- ¿Cuántos productos aproximadamente?
- ¿Con qué frecuencia lo ejecutará?
Comparar paquetes
| Paquetes | BásicoPrecios desde páginas de producto21 US$ | EstándarUna categoría completa42 US$ | PremiumHasta 3 competidores75 US$ |
|---|---|---|---|
| Plazo | 1 día | 2 días | 3 días |
| Cambios | 1 | 2 | 3 |
| Webs | 1 | 1 | hasta 3 |
| Tipos de página | 1 | 2 (categoría y producto) | hasta 3 |
| Campos | hasta 10 | hasta 25 | hasta 25 en cada una |
| Recorre las páginas de una lista | No | Sí | Sí |
| Archivo de resultados | CSV | Excel o CSV | Excel, CSV o JSON |
| Duplicados eliminados, reanuda donde se detuvo | No | No | Sí |
| Hacer pedido Básico | Hacer pedido Estándar | Hacer pedido Premium |
Protección de pago
Usted paga al hacer el pedido, pero el dinero solo se libera por un trabajo aceptado.
- Precio fijoEl precio del paquete no cambia después del pago.
- El dinero queda reservadoAl pagar, el importe solo queda reservado. Pasa a Dleex cuando usted acepta el trabajo.
- Revisado antes de la entregaCada resultado pasa un control de calidad antes de llegar a usted, y lo ve en la página del pedido antes de aceptarlo.
- Cambios gratuitosSolicite cambios dentro de su brief tantas veces como permita el paquete.
- Aceptación a los 3 díasSi en los 3 días siguientes a la entrega no acepta el trabajo ni solicita cambios, se acepta automáticamente. Si escribe en el chat del pedido después de la entrega, el pedido queda en espera; cuando le respondamos, podremos reiniciar el plazo de 3 días y se lo indicaremos en el chat.
- Rehacer el trabajo o reembolso totalSi el resultado no se ajusta a su brief y los cambios no lo resolvieron, o el trabajo tarda más del doble de su plazo, escriba en el chat del pedido: rehacemos el trabajo o le reembolsamos el pago íntegro.
Preguntas y respuestas
¿Emparejará los productos del competidor con los míos?
Guarda el código, el código de barras y el nombre del competidor tal como los muestra la página, para que los cruce con su lista en Excel. Si los códigos son distintos de los suyos, el emparejamiento lo hace usted: no adivinamos qué productos son iguales.
¿Puede ver precios para compradores registrados o mayoristas?
No. Lee los precios que una página abierta muestra a cualquier visitante. Los precios tras una cuenta, un acceso mayorista o un captcha quedan fuera de su alcance.
¿Está permitido recoger los precios de un competidor?
Recoger precios públicos está permitido en muchos casos, pero las condiciones de las webs y las leyes de datos cambian según el país, así que usted decide si puede recogerlos y usarlos. El parser nunca inicia sesión, ni se salta protecciones, ni recoge datos personales.
¿Puede recoger precios de Amazon, Google o tiendas dentro de redes sociales?
No. Sus condiciones lo prohíben, y lo mismo vale para LinkedIn y otras redes sociales. Para esos datos, use la exportación oficial o la API del servicio.
¿Y si el competidor cambia la web?
El parser sigue las páginas tal como son ahora. Tras un cambio de estructura necesita una actualización, que es un pedido nuevo. Si la web limita las visitas, el parser no se lo salta.
¿No encontró su respuesta?


