Comprobador de enlaces rotosDesarrollo y personalización

Un script de Python que recorre su web y lista cada enlace roto con la página en la que está

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 script de Python que recorre su web y lista cada enlace roto con la página en la que está

Ejemplo de resultado

Ejemplo del paquete Estándar

Unir los archivos de ventas mensuales de 9 tiendas en un único informe de Excel

Cómo se ejecuta

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  Carpeta: sales/2026-10, 9 archivos encontrados
2026-11-02 09:14:03 INFO  shop-01.csv: 1.284 filas
2026-11-02 09:14:04 INFO  shop-02.xlsx: 967 filas
2026-11-02 09:14:04 WARN  shop-07.csv: 3 filas sin precio omitidas (líneas 88, 412, 913)
2026-11-02 09:14:05 INFO  Listo: 10.412 filas -> report-2026-10.xlsx (hojas “Ventas” y “Totales”)

Configuración, no código

Los nombres de columna de cada tienda están en settings.ini, así que una tienda nueva o una columna renombrada es una línea ahí:

[columns]
date = Fecha, Fecha de venta, Día
product = Producto, Artículo, Nombre
quantity = Cant., Cantidad, Uds.
price = Precio, Precio unitario

Una parte del código

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """Lee el archivo de una tienda y le da los nombres de columna del informe."""
    table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
    renamed = {}
    for name, variants in columns.items():
        found = next((c for c in table.columns if c.strip() in variants), None)
        if found is None:
            raise ReportError(f"{path.name}: no hay columna para '{name}' (se buscó {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

Archivos: un archivo ZIP con merge_sales.py (310 líneas), settings.ini, requirements.txt y un README sobre cómo instalar Python, ejecutar el script y qué significa cada mensaje del registro. El cliente lo ejecuta en su propio ordenador.

Cliente: una pequeña cadena de 9 papelerías; cada tienda envía sus ventas del mes en un archivo CSV o Excel, con nombres de columna ligeramente distintos. Tarea: un único script que lea todos los archivos de una carpeta, dé a las columnas un mismo formato y genere un solo informe de Excel con todas las ventas y una hoja de totales por tienda.

El cliente y todos los datos son ficticios.

Acerca de este servicio

Los enlaces que no llevan a ninguna parte molestan a los visitantes y dan sensación de web descuidada: entradas antiguas del blog que apuntan a páginas que ha quitado, enlaces de productos tras un cambio de catálogo, webs de socios que han cerrado. Este script de Python empieza en su página de inicio, sigue los enlaces de su propia web página a página y comprueba cada enlace y, desde Estándar, cada imagen que encuentra. Guarda una lista de los rotos con el error, la página donde está cada uno y el texto del enlace, para que sepa qué arreglar y dónde. Lee solo páginas abiertas, al ritmo prudente que usted fije, y nunca inicia sesión. Puede que no detecte los enlaces que las páginas añaden con JavaScript después de cargar. Está pensado para su propia web. Usted lo ejecuta en su ordenador y arregla los enlaces.

Qué incluye

  • Qué recibeUn archivo ZIP con el script de Python, un README con instrucciones paso a paso y, desde Estándar, un archivo de configuración con la página de inicio, los límites y el ritmo; el código también se muestra en la página del pedido.
  • Dónde está cada enlaceLa página, el texto del enlace y el error
  • Internos y salientesEnlaces a sus páginas y a otras webs
  • Ritmo prudenteUna pausa entre solicitudes que usted fija
  • Solo páginas abiertasSin iniciar sesión, sin saltarse protecciones
  • Código legibleCon comentarios, fácil cambiar los límites más adelante

Cómo funciona

  1. 1
    TareaUsted da la dirección de la web y qué comprobar
  2. 2
    CódigoEscribimos el script y la guía para ejecutarlo
  3. 3
    PruébeloLo ejecuta primero con un límite de páginas bajo y luego con toda la web
  4. 4
    CambiosPide cambios dentro de su paquete y nos envía cualquier mensaje de error

Qué necesitamos de usted

La dirección de su web, cuántas páginas tiene aproximadamente y las secciones que dejar fuera (resultados de búsqueda, filtros, el carrito, páginas de administración). Si hay que comprobar imágenes y enlaces a otras webs además de sus propias páginas. A qué velocidad puede ir: una página por segundo es un valor prudente por defecto. El formato de informe que prefiere (CSV o Excel) y su sistema: Windows, macOS o Linux.

Le preguntaremos:

  • ¿Cuál es la dirección de su web?
  • ¿Qué debe comprobar?
  • ¿Algo que dejar fuera?
  • ¿Dónde se ejecutará?

Comparar paquetes

PaquetesBásicoEnlaces de una lista de páginas16 US$EstándarRecorrido de la web con configuración33 US$PremiumHerramienta de comprobación de enlaces67 US$
Plazo1 día2 días3 días
Cambios123
Códigohasta 150 líneashasta 400 líneashasta 1.000 líneas
Archivos de código1hasta 3hasta 8
Archivo de configuraciónNoSíSí
Mensajes de error claros y registroNoSíSí
Opciones de ejecución y guía para ejecutarlo de forma programadaNoNoSí
Guía de instalación y uso (README)SíSíSí
LenguajePythonPythonPython
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

¿Puedo comprobar la web de otra persona?

El script está hecho para su propia web. Comprobar una lista de sus enlaces salientes a otras webs forma parte de él, pero recorrer toda la web de otra persona no es para lo que sirve.

¿Por qué aparecen en el informe algunos enlaces que funcionan?

Algunas webs responden a los scripts con un error o un bloqueo aunque la página se abra bien en el navegador. Esos enlaces se marcan aparte para que los compruebe a mano.

¿Ralentizará mi web?

No a un ritmo prudente: por defecto pide una página por segundo, menos que un solo visitante haciendo clic rápido. Puede reducirlo aún más en la configuración.

¿Arreglará los enlaces?

No. Le da la lista de lo que está roto y dónde; usted arregla los enlaces en el editor de su web. Nunca iniciamos sesión en su web.

¿No encontró su respuesta?

Paquetes