Parser de websDesarrollo y personalización

Un parser de webs en Python que reúne datos públicos de las páginas en CSV o Excel: precios, catálogos, anuncios

Suele estar listo en 15 minutosCambios incluidosControl de calidad
Paquetes
Protecció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.

Un parser de webs en Python que reúne datos públicos de las páginas en CSV o Excel: precios, catálogos, anuncios

Ejemplo de resultado

Ejemplo del paquete Estándar

Parser del catálogo de un proveedor de herramientas de jardín a Excel

Cómo queda el resultado

ReferenciaNombrePrecioDisponiblePesoFoto
GT-1042Tijeras de podar, 20 mm18,90Sí0,24 kg…/gt-1042.jpg
GT-1187Sierra plegable, 210 mm24,50Sí0,31 kg…/gt-1187.jpg
GT-2210Tijeras para setos, hoja ondulada39,00No1,10 kg…/gt-2210.jpg
GT-3305Pala de mano, acero inoxidable9,80Sí0,18 kg…/gt-3305.jpg
GT-4120Manguera de jardín 25 m, 1/2"42,00Sí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

Un parser recoge los datos que se ven en páginas web públicas y los guarda como una tabla: precios y existencias de productos, el catálogo de un proveedor para su tienda, anuncios, ofertas de empleo, eventos o artículos. Díganos la web y las páginas, enumere los campos que necesita (nombre, precio, enlace, imagen, etc.) y envíe una o dos de esas páginas guardadas desde su navegador (Archivo > Guardar página como) o capturas de ellas. Escribimos el parser en Python según la estructura real de esas páginas, y guarda los resultados en CSV, Excel o JSON. Recibe un archivo con el código, un archivo de configuración con las direcciones y la pausa entre páginas, y un README que explica cómo instalar Python y ejecutarlo. Usted ejecuta el parser en su propio ordenador, así que los datos le llegan directamente; nosotros no los recogemos por usted ni los guardamos. Lee solo páginas abiertas, a un ritmo prudente, y nunca inicia sesión, ni se salta captchas u otras protecciones, ni recoge datos personales como nombres, correos o teléfonos de personas. Cuando una web cambia su estructura, el parser puede requerir una actualización. Si puede recoger y usar los datos de una web según sus condiciones es responsabilidad suya.

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.
  • Sus campos, su tablaColumnas en el orden que necesita
  • Hecho sobre las páginas realesEscrito según la estructura de las páginas que envía
  • Ritmo prudenteUna pausa entre páginas, fijada en la configuración
  • Se ejecuta en su ordenadorWindows, macOS o Linux, con Python
  • Una guía sencillaQué instalar y cómo ejecutarlo, paso a paso

Cómo funciona

  1. 1
    PáginasUsted da la web, los campos y una o dos páginas guardadas
  2. 2
    ParserEscribimos el código y la guía para ejecutarlo
  3. 3
    EjecuciónLo ejecuta y revisa las primeras filas de la tabla
  4. 4
    CambiosPide cambios dentro de su paquete y nos envía cualquier mensaje de error

Qué necesitamos de usted

La web y las páginas exactas: un enlace a una lista y a una página de elemento, y cuántas páginas hay aproximadamente. Los campos que necesita, en el orden de su tabla, con un ejemplo de cada uno. Una o dos de esas páginas guardadas desde su navegador como HTML (Archivo > Guardar página como) o capturas, para que el parser siga su estructura real. El archivo de resultados que necesita (CSV, Excel o JSON) y dónde lo ejecutará.

Le preguntaremos:

  • ¿Qué web y qué páginas?
  • Los campos que necesita
  • ¿Cuántas páginas aproximadamente?
  • El archivo de resultados
  • Cualquier otra cosa que deba hacer

Comparar paquetes

PaquetesBásicoParser para un tipo de página25 US$EstándarPáginas de lista y de elemento49 US$PremiumVarias webs o tipos de página89 US$
Plazo1 día2 días3 días
Cambios123
Webs11hasta 3
Tipos de página12 (lista y elemento)hasta 3
Camposhasta 10hasta 25hasta 25 en cada una
Recorre las páginas de una listaNoSíSí
Archivo de resultadosCSVExcel o CSVExcel, CSV o JSON
Duplicados eliminados, reanuda donde se detuvoNoNoSí
Hacer pedido BásicoHacer pedido EstándarHacer 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.
Cómo funciona →

Preguntas y respuestas

¿Es legal hacer parsing de una web?

Recoger datos públicos está permitido en muchos casos, pero las condiciones de uso de las webs y las leyes de datos varían entre países, así que usted decide si puede recoger y usar los datos. El parser nunca inicia sesión, ni se salta protecciones, ni recoge datos personales, lo que lo mantiene en terreno seguro.

¿Recogerán ustedes los datos por mí?

No. Recibe el parser y lo ejecuta usted mismo, así que los resultados le llegan directamente y puede volver a ejecutarlo siempre que necesite datos actualizados.

¿Y si la web cambia o bloquea el parser?

El parser funciona según las páginas tal como son ahora. Si la web cambia su estructura más adelante, el parser requiere una actualización, que es un nuevo pedido. Lee a un ritmo prudente, pero una web aun así puede limitar las visitas; no se salta esos límites.

¿Puede hacer parsing de Amazon, Google o redes sociales?

No. Sus condiciones prohíben recoger sus datos de esta forma, muchas de sus páginas requieren iniciar sesión y contienen datos personales de las personas. Para esos datos, use la API oficial o la exportación del servicio.

¿Necesito saber programar?

No. El README explica cómo instalar Python una vez, instalar lo que necesita el parser con un solo comando y ejecutarlo. Para las páginas que construyen su contenido con JavaScript, el parser usa una biblioteca de navegador (Playwright), algo que también cubre el README.

¿No encontró su respuesta?

Paquetes