Volver al blog

Raspado web en Excel: Power Query, VBA y métodos API

Emily Chen
Emily Chen

Advanced Data Extraction Specialist

28-Jul-2026

Resumen:

  • Utiliza Power Query cuando una página expone una tabla HTML estable o un endpoint JSON; le da a Excel una transformación documentada y actualizable.
  • Usa VBA cuando los usuarios del libro de trabajo necesitan una importación controlada por un botón o una transferencia de CSV controlada. Evita hacer que VBA analice una estructura de página que cambia.
  • Para páginas renderizadas por JavaScript o validadas por tráfico, adquiere el contenido primero con una API y luego permite que Excel transforme los datos devueltos.
  • El diseño más mantenible separa la adquisición del análisis: el servicio de origen devuelve un esquema estable, y Excel se encarga de los filtros, uniones, pivotes y gráficos.

La recopilación de datos web en Excel puede significar cuatro trabajos muy distintos: copiar una tabla una vez, actualizar una tabla pública, llamar a una API JSON o alimentar un libro de trabajo desde una página que requiere renderizado en el navegador. Elegir la herramienta según el comportamiento de la página es más fiable que elegirla por familiaridad.

Esta guía cubre Power Query, VBA y un enfoque basado en API. Los ejemplos están limitados a datos públicos que el proyecto tiene permiso para recopilar. No los utilices para acceder a información privada, autenticada, personal o restringida sin autorización explícita.

Elige el método antes de construir el libro de trabajo

Comportamiento de origen Mejor camino de Excel Actualizable Nivel de programación Principal limitación
Tabla pequeña visible, una sola vez Copiar y pegar No Ninguno Manual y difícil de reproducir
Tabla HTML estable Power Query: Desde Web Bajo Puede no ver contenido renderizado por el cliente
Endpoint JSON o CSV público Power Query o VBA Medio Requiere un contrato de respuesta estable
Página pública renderizada por JavaScript API de adquisición, luego Power Query Medio Necesita un servicio externo
Flujo de trabajo de libro de trabajo controlado por botón VBA llamando a un endpoint CSV o JSON Medio Seguridad y mantenimiento de macros

La regla práctica es simple: mantener a Excel responsable de la transformación tabular, no de la emulación del navegador. Cuando una página web es la capa de presentación en lugar de la fuente de datos, busca un endpoint documentado o coloca un servicio de adquisición frente al libro de trabajo.

Método 1: Importar una tabla visible con Power Query

El flujo soportado por Microsoft es Datos > Desde Web, seguido de seleccionar una tabla detectada en el Navegador y cargarla en el libro de trabajo. La secuencia completa aparece en la guía de importación web de Microsoft.

Paso a paso

  1. Abre un libro de trabajo y selecciona Datos.
  2. Elige Desde Web en el grupo Obtener y transformar datos.
  3. Pega la URL pública permitida de la página.
  4. Selecciona la tabla en el Navegador.
  5. Elige Transformar datos si es necesario limpiar las columnas, o Cargar para escribirla directamente en una hoja.
  6. Renombra la consulta y la tabla para que su propósito sea obvio.
  7. Selecciona Actualizar cuando necesites volver a obtener los datos de origen.

Power Query almacena los pasos de transformación. Esto es importante porque una consulta reproducible puede eliminar columnas, establecer tipos, dividir texto y unir datos de referencia de la misma manera en cada actualización. Microsoft también documenta que una tabla web cargada puede actualizarse con Actualizar consulta en el mismo flujo de trabajo de actualización de Excel.

Cuando Desde Web no devuelve una tabla útil

La página puede renderizar sus datos con JavaScript después de que llega el HTML inicial. También puede exponer los valores a través de una solicitud XHR o fetch en lugar de una tabla HTML. En esos casos, el resultado del Navegador puede estar vacío aunque el navegador muestre filas.

Abre las herramientas de desarrollo del navegador solo para identificar un endpoint de datos documentado y permitido, no para eludir controles de acceso. Si existe un endpoint JSON estable, Power Query puede llamarlo directamente. Si se requiere validación de tráfico o renderizado por navegador, usa el método basado en API más adelante en esta guía.

Método 2: Llamar a JSON con Power Query M

La función Web.Contents de Power Query realiza solicitudes HTTP y devuelve una respuesta binaria que se puede pasar a Json.Document. Microsoft documenta sus opciones de solicitud, incluidas Headers, Content, RelativePath, Query y ApiKeyName, en la referencia de Web.Contents.

Requisitos previos

  • Excel con Power Query
  • Un token de API de Scrapeless ingresado a través del diálogo de credenciales de API web del libro de trabajo
  • Una URL objetivo pública permitida
  • Un sobre de respuesta JSON conocido

El siguiente bloque de Power Query M es un ejemplo de brecha de requisitos previos porque necesita el token y el objetivo del lector. Llama a la API Universal Scraping, lee el HTML devuelto desde data, y produce una tabla de una fila que puede alimentar un parser posterior o una hoja de auditoría.

powerquery Copy
let
    Endpoint = "https://api.scrapeless.com",
    TargetUrl = Excel.CurrentWorkbook(){[Name="AuthorizedTargetUrl"]}[Content]{0}[Column1],
    Payload = Json.FromValue([
        actor = "unlocker.webunlocker",
        proxy = [country = "ANY"],
        input = [
            url = TargetUrl,
            jsRender = [
                enabled = true,
                response = [type = "html", options = []]
            ]
        ]
    ]),
    Raw = Web.Contents(
        Endpoint,
        [
            RelativePath = "api/v2/unlocker/request",
            Headers = [
                #"Content-Type" = "application/json"
            ],
            Content = Payload,
            ApiKeyName = "x-api-token"
        ]
    ),
    Envelope = Json.Document(Raw),
    Checked = if Envelope[code] = 200 and Envelope[data] <> null
        then Envelope[data]
        else error "The acquisition response did not contain page data",
    Output = #table(
        {"source_url", "html"},
        {{TargetUrl, Checked}}
    )
in
    Output

Después de crear la consulta, elige Web API cuando Excel pida credenciales y pega el token allí. ApiKeyName especifica el nombre del parámetro mientras mantiene el secreto fuera del origen de M. El comportamiento de credenciales se ilustra en el ejemplo seguro de API clave de Microsoft.

La forma actual de la solicitud de API y las opciones de JavaScript también están disponibles en la documentación de Renderizado JS de Scrapeless.

Convertir HTML devuelto en columnas estables de Excel

Cargar un documento HTML completo en una celda es un puente diagnóstico, no el conjunto de datos final. Los libros de producción deberían recibir un esquema compacto.

Por ejemplo:

Columna Tipo Significado
url_fuente Texto Página canónica recopilada
recopilado_en Fecha/Hora Hora de adquisición
nombre Texto Nombre de entidad normalizado
precio Decimal Precio numérico sin símbolos de moneda
moneda Texto Código de moneda ISO
disponibilidad Texto Estado de disponibilidad normalizado

Hay dos formas limpias de alcanzar ese contrato:

  • Pedir a la capa de adquisición que devuelva campos estructurados.
  • Analizar el HTML devuelto fuera de Excel, luego exponer JSON o CSV a Power Query.

Ambos reducen la dependencia del libro de trabajo en la marcado de la página. Un libro que espera seis campos nombrados es más fácil de probar que uno que contiene docenas de selectores y pasos de limpieza de texto.

Si la página necesita renderizado de JavaScript antes de que esos campos existan, prueba la API de Raspado Universal con una URL autorizada antes de rediseñar el libro.

Método 3: Usar VBA para una transferencia controlada de CSV

VBA es útil cuando un analista necesita un botón que importa un archivo en una hoja conocida. Mantén la adquisición web fuera de la macro y deja que la macro consuma una URL CSV estable. Esto evita acoplar un libro de trabajo a HTML cambiante.

Requisitos previos

  • Excel de escritorio con macros habilitadas bajo la política de la organización
  • Un punto final HTTPS permitido que devuelva CSV UTF-8
  • Una hoja de trabajo llamada DatosImportados
  • Un rango nombrado CsvEndpoint que contenga la URL del punto final

El bloque es un requisito previo porque la política del punto final y del libro de trabajo son específicas del entorno del lector.

vb Copy
Opción Explícita

Public Sub ImportarCsv()
    Dim endpoint As String
    Dim objetivo As Worksheet
    Dim consulta As QueryTable

    endpoint = ThisWorkbook.Names("CsvEndpoint").RefersToRange.Value
    Set objetivo = ThisWorkbook.Worksheets("DatosImportados")

    objetivo.Cells.ClearContents

    Set consulta = objetivo.QueryTables.Add( _
        Conexión:="TEXT;" & endpoint, _
        Destino:=objetivo.Range("A1"))

    With consulta
        .TextFileParseType = xlDelimited
        .TextFileCommaDelimiter = Verdadero
        .TextFilePlatform = 65001
        .RefreshStyle = xlOverwriteCells
        .Refresh BackgroundQuery:=Falso
    End With
End Sub

Esta macro es deliberadamente estrecha: importa un contrato CSV y deja la lógica de adquisición, renderizado y acceso en el servicio que los posee. Si el punto final necesita autenticación personalizada, el almacén de credenciales de Power Query es a menudo una mejor opción que incrustar un token en VBA.

Microsoft documenta que Workbook.RefreshAll actualiza rangos de datos externos y reportes de Tabla Dinámica en el referencia RefreshAll de Excel VBA. Eso puede soportar un botón de actualización a nivel de libro después de que cada consulta haya sido configurada y probada.

Raspado web API-prioritario en Excel

Un diseño API-prioritario tiene dos etapas:

  1. Adquirir y validar la página: renderizar JavaScript donde sea necesario, manejar la validación del tráfico y confirmar que se devolvió el contenido esperado.
Copy
2. **Transformar y analizar en Excel:** moldea la respuesta en columnas, une tablas de búsqueda, construye pivotes y publica gráficos.

La [API Universal de Scraping](https://www.scrapeless.com/es/product/universal-scraping-api?utm_source=website&utm_medium=blog&utm_campaign=universalscrapingapi&utm_term=web-scraping-in-excel) está diseñada para la primera etapa. Power Query sigue siendo el conector que enfrenta al libro de trabajo. Este límite permite a los equipos cambiar el método de adquisición sin reconstruir cada fórmula y gráfico.

Utiliza la [página de precios de Scrapeless](https://www.scrapeless.com/es/pricing?utm_source=website&utm_medium=blog&utm_campaign=universalscrapingapi&utm_term=web-scraping-in-excel) para comparar el costo del servicio con el tiempo de ingeniería necesario para operar la infraestructura del navegador. Para una visión más amplia de los formatos de respuesta que se adaptan a las canalizaciones de Excel, consulta la [actualización del formato de respuesta de la API Universal de Scraping](https://www.scrapeless.com/es/blog/response-formats-update?utm_source=website&utm_medium=blog&utm_campaign=universalscrapingapi&utm_term=web-scraping-in-excel).

## Problemas comunes y soluciones

### El navegador no muestra tablas

Es probable que la página no esté exponiendo una tabla HTML estable en la respuesta inicial. Busca una fuente JSON o CSV permitida. Si los valores aparecen solo después de JavaScript, utiliza una capa de adquisición que devuelva el contenido completo.

### La actualización devuelve un error de nivel de privacidad

Power Query aísla las fuentes de datos de acuerdo con la configuración de privacidad. Revisa la configuración de la fuente del libro de trabajo y evita combinar datos organizacionales privados con una fuente pública a menos que la política lo permita.

### Una consulta funciona en una computadora pero no en otra

Verifica la edición de Excel, la configuración de autenticación, los rangos con nombre, la política de macros y los requisitos de puerta de enlace. Las credenciales son específicas del entorno y no deben viajar dentro del archivo del libro de trabajo.

### El libro de trabajo carga una página de desafío

Agrega una validación a nivel de contenido antes de la transformación. Requiere el campo JSON esperado, el encabezado CSV o el marcador de página. Rechaza cualquier respuesta que no cumpla con ese contrato.

### Los tipos de columna cambian después de la actualización

Aplica tipos de datos explícitos en Power Query después del paso de origen. Mantén los símbolos de moneda, los separadores específicos de la localidad y los valores faltantes fuera de las columnas numéricas.

### La actualización tarda demasiado

Reduce los datos antes de que lleguen a Excel. Filtra por fecha o identificador en la fuente, solicita solo los campos necesarios y carga consultas intermedias como conexión solamente cuando las hojas de trabajo no las necesiten.

## De un prototipo de libro de trabajo a un feed de producción

Una progresión útil es:

1. Demuestra una URL y una fila manualmente.
2. Crea un Power Query con nombres de columnas y tipos explícitos.
3. Agrega validación de contenido y una hoja de errores.
4. Mueve el renderizado y el análisis HTML al servicio de adquisición.
5. Publica JSON o CSV con un esquema versionado.
6. Programa la recopilación fuera de Excel y mantiene la actualización del libro de trabajo enfocada en el análisis.

Esto mantiene útil la hoja de cálculo sin convertirla en un navegador web desatendido. El libro de trabajo se convierte en un consumidor de datos limpios, que es un papel que Excel maneja bien.

## Conclusión: deja que Excel analice, no emule un navegador

Power Query es la opción predeterminada para tablas HTML actualizables y APIs JSON. VBA es valioso para importaciones controladas y activadas por el usuario. Cuando una fuente permitida depende de JavaScript o validación de tráfico, utiliza una API de adquisición y brinda a Excel un contrato de datos estable.

Para construir ese límite, [crea una cuenta en Scrapeless](https://app.scrapeless.com/passport/login?utm_source=website&utm_medium=blog&utm_campaign=universalscrapingapi&utm_term=web-scraping-in-excel), prueba la API Universal de Scraping con una URL pública, define los campos que necesita el libro de trabajo y haz que esos campos sean el contrato de actualización.

## Preguntas Frecuentes

### ¿Puede Excel raspar un sitio web sin código?

Sí. El conector Desde Web de Power Query puede importar muchas tablas HTML visibles a través de un flujo de trabajo gráfico. Es más adecuado para páginas públicas estables que exponen la tabla en su HTML inicial.

### ¿Por qué Power Query muestra una página vacía?

Los valores pueden ser renderizados por JavaScript después de la respuesta inicial, cargados desde un endpoint separado, o reemplazados por una página de validación de tráfico. Inspecciona el comportamiento de la fuente y elige el método de adquisición en consecuencia.

### ¿Es Power Query mejor que VBA para el scraping web?

Power Query suele ser mejor para la transformación de datos actualizables y la gestión de credenciales. VBA es útil para botones de libros de trabajo e importaciones de archivos controladas, pero es un lugar frágil para mantener el análisis HTML.

### ¿Puede Power Query llamar a una API JSON?

Sí. `Web.Contents` puede obtener una respuesta, y `Json.Document` puede analizarla en registros, listas y tablas. Utiliza el diálogo de credenciales en lugar de almacenar secretos de API en el código M.

### ¿Cómo puede un libro de trabajo manejar páginas renderizadas por JavaScript?

Utiliza un servicio de adquisición capaz de renderizar para devolver HTML, JSON o CSV, luego conecta Power Query a esa salida. Esto mantiene el comportamiento del navegador fuera de la hoja de cálculo.

### ¿Con qué frecuencia debe Excel actualizar los datos raspados?
Ajuste la frecuencia de actualización a las necesidades del negocio, la autorización de origen y la capacidad del servicio. Para recolecciones programadas o de alto volumen, realice la adquisición fuera de Excel y permita que el libro de trabajo se actualice a partir de un conjunto de datos preparado.

En Scrapeless, solo accedemos a datos disponibles públicamente y cumplimos estrictamente con las leyes, regulaciones y políticas de privacidad del sitio web aplicables. El contenido de este blog es sólo para fines de demostración y no implica ninguna actividad ilegal o infractora. No ofrecemos garantías y renunciamos a toda responsabilidad por el uso de la información de este blog o enlaces de terceros. Antes de realizar cualquier actividad de scraping, consulte a su asesor legal y revise los términos de servicio del sitio web de destino u obtenga los permisos necesarios.

Artículos más populares

Catalogar