🌐 Web ScrapingPro Plan

SCRAPE_BY_REGEX

Extrae contenido de una página web usando un patrón de expresión regular.

Firma de la Fórmula
=SCRAPE_BY_REGEX(url, regex, [removeHtml], [group], [renderJs])

Devuelve: string or 2D array (multiple matches returned as separate rows)

Descripción General

SCRAPE_BY_REGEX extrae contenido de páginas web aplicando un patrón de expresión regular contra el código fuente de la página. A diferencia de los selectores CSS o XPath que navegan la estructura del documento, regex opera directamente sobre el contenido HTML o de texto sin procesar, haciéndola únicamente adecuada para extraer patrones específicos como precios, números de teléfono, direcciones de correo electrónico, fechas, códigos de producto, claves API y cualquier otro texto que sigue un formato predecible.

Parámetros

ParámetroTipoRequeridoDescripción
urlstringLa URL completa de la página web a extraer (debe incluir https:// o http://).
regexstringPatrón de expresión regular para coincidir contra el contenido de la página. Usa sintaxis regex estándar. Las barras invertidas deben duplicarse en fórmulas de Sheets (por ejemplo, "\\d+" para dígitos).
removeHtmlbooleanNo (FALSE)Opcional. Establece en TRUE para eliminar todas las etiquetas HTML antes de aplicar el regex, dejando solo contenido de texto visible. Por defecto es FALSE (regex aplicado al código HTML fuente).
groupnumberNo (0)Opcional. El grupo de captura a devolver. 0 devuelve la coincidencia completa, 1 devuelve el primer grupo de captura, 2 el segundo, etc. Por defecto es 0.
renderJsbooleanNoOpcional. Establece en TRUE para renderizar JavaScript antes de aplicar el regex. Requerido para contenido cargado dinámicamente. Más lento que el modo estándar.

Ejemplos

1

Extraer todos los precios de una página

Coincide con cantidades en dólares en el formato $XX.XX en toda la página. Devuelve todas las coincidencias como filas separadas, facilitando ver todos los precios de un vistazo.

fx
=SCRAPE_BY_REGEX("https://store.example.com/deals", "\$[0-9,]+\.\d{2}")

Salida

$49.99
$129.00
$24.95
$89.50
2

Extraer direcciones de correo electrónico de una página de contacto

Usa un patrón regex estándar de correo electrónico con removeHtml habilitado para encontrar todas las direcciones de correo electrónico en la página independientemente de cómo estén envueltas en HTML.

fx
=SCRAPE_BY_REGEX("https://example.com/contact", "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}", TRUE)

Salida

info@example.com
support@example.com
sales@example.com
3

Extraer valores usando un grupo de captura

Coincide con el patrón "SKU: ABC-123" y devuelve solo el grupo de captura (el código SKU mismo, sin el prefijo "SKU:"). El grupo 1 aísla el valor dentro de los paréntesis.

fx
=SCRAPE_BY_REGEX("https://store.example.com/product/123", "SKU:\s*([A-Z0-9-]+)", TRUE, 1)

Salida

WH-1000XM5
4

Extraer números de teléfono de listados de negocios

Coincide con números de teléfono de EE.UU. en el formato (XXX) XXX-XXXX. El parámetro removeHtml asegura que los números de teléfono divididos en etiquetas HTML se capturen correctamente.

fx
=SCRAPE_BY_REGEX("https://directory.example.com/plumbers", "\(\d{3}\)\s*\d{3}-\d{4}", TRUE)

Salida

(555) 123-4567
(555) 987-6543
(555) 246-8135

Casos de Uso

E-commerce

Monitoreo de Precios en Múltiples Minoristas

Rastrea precios de productos en diferentes minoristas usando patrones regex que coinciden con el formato de precio de cada sitio. Funciona incluso cuando las estructuras HTML difieren entre sitios, ya que el regex apunta al patrón de precio en sí en lugar del marcado circundante.

Ventas

Generación de Leads desde Directorios de Negocios

Extrae información de contacto (correos electrónicos, números de teléfono, direcciones) de directorios de negocios y páginas amarillas. Los patrones regex coinciden confiablemente con formatos de datos estructurados como números de teléfono y correos electrónicos independientemente de cómo se muestren en la página.

Gestión de Inventario

Extracción de SKU de Catálogos de Productos

Extrae códigos de producto, SKUs y números de modelo de catálogos de proveedores y sitios web de fabricantes. Usa regex para coincidir con formatos de código específicos de la empresa (por ejemplo, "XX-####-YY") y construye bases de datos de productos completas.

Legal

Extracción de Referencias de Documentos Legales

Extrae números de caso, referencias de estatutos y citas de regulaciones de bases de datos legales y sitios web de tribunales. Regex coincide precisamente con formatos de cita como "42 U.S.C. 1983" o números de expediente de casos.

Desarrollo de Software

Seguimiento de Números de Versión y Registros de Cambios

Monitorea páginas de lanzamiento de software y registros de cambios para rastrear números de versión, fechas de lanzamiento y frecuencias de actualización. Patrones regex como "v\d+\.\d+\.\d+" extraen confiablemente números de versión semántica de cualquier formato de página.

Investigación de Marketing

Recopilación de Datos de Perfiles de Redes Sociales

Extrae conteos de seguidores, métricas de engagement e información de perfil de páginas públicas de redes sociales. Regex maneja los varios formatos de números (1.2K, 1,200, 1200) usados en diferentes plataformas.

Consejos Profesionales

CONSEJO

Siempre prueba tu regex en regex101.com antes de usarlo en la hoja de cálculo. Pega el código HTML fuente (o contenido de texto si usas removeHtml) como el string de prueba para verificar que tu patrón coincide correctamente.

CONSEJO

Usa cuantificadores no codiciosos (*? y +?) en lugar de codiciosos (* y +) al coincidir contenido entre delimitadores. Por ejemplo, "<b>.*?</b>" coincide con elementos bold individuales, mientras "<b>.*</b>" coincide con todo desde el primer <b> hasta el último </b>.

CONSEJO

Combina removeHtml con patrones de texto simples para resultados más confiables. Regex en texto limpio es mucho más fácil de escribir y mantener que regex en HTML sin procesar con todos sus atributos y etiquetas anidadas.

CONSEJO

Usa grupos de captura estratégicamente: envuelve solo la parte que quieres extraer entre paréntesis y establece el parámetro group en consecuencia. Esto te permite usar texto circundante como anclas de contexto sin incluirlo en la salida.

CONSEJO

Para extraer datos estructurados como tablas, considera usar SCRAPE_BY_CSS_PATH o SCRAPE_BY_XPATH en su lugar. Regex funciona mejor para extraer patrones de datos específicos (números, códigos, correos) en lugar de navegar estructura de documentos.

La función obtiene la URL objetivo, opcionalmente elimina etiquetas HTML (cuando removeHtml es TRUE), y luego aplica tu patrón regex. Todas las coincidencias se devuelven, con múltiples coincidencias apareciendo como filas separadas en tu hoja de cálculo. Si usas grupos de captura en tu patrón, especifica qué grupo devolver con el parámetro group, donde 0 devuelve la coincidencia completa y 1 devuelve el primer grupo de captura.

El parámetro removeHtml es particularmente útil cuando los datos que necesitas abarcan etiquetas HTML. Por ejemplo, un precio podría renderizarse como "<span class="currency">$</span><span class="amount">29.99</span>", que es difícil de coincidir con un solo regex en HTML sin procesar. Establecer removeHtml en TRUE colapsa esto en "$29.99", haciendo tu patrón regex más simple y confiable.

Para sitios web que generan contenido con JavaScript, habilita el parámetro renderJs para usar un navegador sin interfaz. Esto asegura que el regex se aplique contra el contenido de página completamente renderizado en lugar de solo el código HTML fuente inicial.

SCRAPE_BY_REGEX sobresale en escenarios donde los datos objetivo no tienen estructura HTML consistente pero sí tienen un formato de texto consistente. También es valiosa como alternativa cuando los selectores CSS y XPath fallan debido a marcado ofuscado o generado dinámicamente. Las aplicaciones comunes incluyen monitoreo de precios, extracción de información de contacto, recopilación de SKU y códigos de producto, y flujos de trabajo de validación de datos.

Errores Comunes

No matches found

Causa: El patrón regex no coincide con ningún contenido en la página. Esto puede suceder si el patrón es demasiado específico, el contenido se renderiza vía JavaScript, o las etiquetas HTML están interfiriendo con la coincidencia de texto.

Solución: Intenta habilitar removeHtml para coincidir contra texto plano en lugar de HTML sin procesar. Verifica tu regex en regex101.com usando el código fuente de la página como string de prueba. Si el contenido se carga dinámicamente, habilita renderJs.

Error: URL and regex are required

Causa: Uno o ambos parámetros requeridos faltan o están vacíos.

Solución: Asegúrate de que tanto la URL (incluyendo protocolo) como el patrón regex estén proporcionados como strings no vacíos. Verifica que las referencias de celda apunten a celdas con valores.

Error: Invalid regular expression

Causa: El patrón regex contiene un error de sintaxis como paréntesis no coincidentes, secuencias de escape inválidas o clases de caracteres malformadas.

Solución: Valida tu regex en regex101.com. Problemas comunes incluyen caracteres especiales sin escape (paréntesis, corchetes, puntos necesitan barras invertidas si se usan literalmente), delimitadores de grupo no coincidentes y posiciones de cuantificador inválidas.

Preguntas Frecuentes

En fórmulas de Google Sheets, los strings se encierran entre comillas dobles. Dado que regex usa barras invertidas para caracteres especiales (\d para dígitos, \s para espacios en blanco), y el analizador de fórmulas de Sheets no interpreta las barras invertidas como caracteres de escape dentro de strings, las escribes como barras invertidas simples: "\d+" coincide con uno o más dígitos. Si ves comportamiento inesperado, intenta el patrón con removeHtml establecido en TRUE para simplificar el contenido que se está coincidiendo. Prueba tu regex en regex101.com antes de usarlo en la función.

El grupo 0 (por defecto) devuelve todo el texto coincidente. El grupo 1 devuelve solo el texto dentro del primer conjunto de paréntesis en tu patrón. Por ejemplo, con el patrón "Precio: (\$[0-9.]+)" aplicado al texto "Precio: $29.99", el grupo 0 devuelve "Precio: $29.99" y el grupo 1 devuelve "$29.99". Esto es útil cuando necesitas coincidir con un patrón para contexto pero solo extraer parte de él. Puedes tener múltiples grupos de captura (grupo 2, grupo 3, etc.) agregando más secciones entre paréntesis a tu patrón.

Habilita removeHtml (establece en TRUE) cuando: (1) El texto que quieres coincidir está dividido en múltiples etiquetas HTML, como un precio mostrado como "<span>$</span><span>29</span>.<span>99</span>". (2) Las etiquetas HTML están interfiriendo con las coincidencias de tu patrón. (3) Quieres coincidir contra solo el contenido de texto visible, ignorando todo el marcado. (4) Tu regex está diseñado para texto plano, no HTML. Déjalo como FALSE cuando específicamente necesites coincidir con atributos HTML, nombres de etiquetas o estructura de marcado.

El motor regex soporta flags en línea usando la sintaxis (?flags) al comienzo de tu patrón. Usa "(?i)" para coincidencia insensible a mayúsculas, "(?s)" para modo de línea única (punto coincide con saltos de línea), y "(?m)" para modo multilínea. Por ejemplo, "(?i)precio:\s*\$[0-9.]+" coincide con variantes de "Precio:", "PRECIO:" y "precio:". Puedes combinar flags: "(?im)" habilita tanto modo insensible a mayúsculas como multilínea.

Por defecto, el regex se aplica al código HTML fuente sin procesar, que incluye todas las etiquetas, atributos y marcado. Por ejemplo, un patrón como "[A-Z][a-z]+" destinado a coincidir con palabras capitalizadas también podría coincidir con nombres de etiquetas como "Div" o "Span". Establece removeHtml en TRUE para eliminar primero todas las etiquetas HTML, para que tu regex solo vea el contenido de texto visible. Alternativamente, haz tu regex más específico para excluir patrones HTML.

El motor regex soporta sintaxis completa compatible con PCRE incluyendo lookaheads, lookbehinds, grupos sin captura, cuantificadores perezosos y clases de caracteres. Sin embargo, patrones extremadamente complejos con backtracking excesivo (como cuantificadores anidados como "(a+)+") pueden causar errores de timeout. Mantén los patrones tan simples y específicos como sea posible. Si te encuentras escribiendo patrones regex muy largos, considera usar SCRAPE_BY_CSS_PATH o SCRAPE_BY_XPATH para reducir el contenido primero, luego usa regex en el resultado.

REGEXEXTRACT es una función nativa de Google Sheets que aplica un regex a texto ya en tu hoja de cálculo. SCRAPE_BY_REGEX obtiene una página web y aplica el regex al contenido de la página, combinando obtención web y extracción en un solo paso. Podrías lograr resultados similares usando SCRAPE_BY_CSS_PATH para obtener el texto de la página y luego REGEXEXTRACT en el resultado, pero SCRAPE_BY_REGEX es más eficiente ya que procesa todo del lado del servidor en una solicitud y puede devolver múltiples coincidencias.

Por defecto, el punto (.) en regex no coincide con caracteres de salto de línea. Si necesitas coincidir a través de saltos de línea, usa el flag en línea "(?s)" al inicio de tu patrón para habilitar el modo de línea única, donde el punto coincide con cualquier carácter incluyendo saltos de línea. Por ejemplo, "(?s)<div class="product">.*?</div>" coincide con un div y todo su contenido a través de múltiples líneas. El flag (?m) hace que ^ y $ coincidan con el inicio/fin de cada línea en lugar de todo el string.

Funciones Relacionadas

Comienza a usar SCRAPE_BY_REGEX hoy

Instala Unlimited Sheets para obtener SCRAPE_BY_REGEX y 41 otras funciones poderosas en Google Sheets.