🌐 Web ScrapingPro Plano

SCRAPE_BY_REGEX

Extrai conteúdo de uma página web usando um padrão de expressão regular.

Assinatura da Fórmula
=SCRAPE_BY_REGEX(url, regex, [removeHtml], [group], [renderJs])

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

Visão Geral

SCRAPE_BY_REGEX extrai conteúdo de páginas web aplicando um padrão de expressão regular ao código fonte da página. Ao contrário de seletores CSS ou XPath que navegam a estrutura do documento, regex opera diretamente no conteúdo HTML ou de texto bruto, tornando-a adequada exclusivamente para extrair padrões específicos como preços, números de telefone, endereços de e-mail, datas, códigos de produto, chaves de API e qualquer outro texto que siga um formato previsível.

Parâmetros

ParâmetroTipoObrigatórioDescrição
urlstringSimA URL completa da página web a ser extraída (deve incluir https:// ou http://).
regexstringSimPadrão de expressão regular para corresponder ao conteúdo da página. Use sintaxe regex padrão. Barras invertidas devem ser duplicadas em fórmulas do Sheets (por exemplo, "\\d+" para dígitos).
removeHtmlbooleanNão (FALSE)Opcional. Defina como TRUE para remover todas as tags HTML antes de aplicar o regex, deixando apenas conteúdo de texto visível. O padrão é FALSE (regex aplicado ao código HTML fonte).
groupnumberNão (0)Opcional. O grupo de captura a retornar. 0 retorna a correspondência completa, 1 retorna o primeiro grupo de captura, 2 o segundo, etc. O padrão é 0.
renderJsbooleanNãoOpcional. Defina como TRUE para renderizar JavaScript antes de aplicar o regex. Necessário para conteúdo carregado dinamicamente. Mais lento que o modo padrão.

Exemplos

1

Extrair todos os preços de uma página

Corresponde a valores em reais no formato R$XX.XX em toda a página. Retorna todas as correspondências como linhas separadas, facilitando ver todos os preços de relance.

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

Saída

$49.99
$129.00
$24.95
$89.50
2

Extrair endereços de e-mail de uma página de contato

Usa um padrão regex padrão de e-mail com removeHtml habilitado para encontrar todos os endereços de e-mail na página independentemente de como estão envolvidos em HTML.

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

Saída

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

Extrair valores usando um grupo de captura

Corresponde ao padrão "SKU: ABC-123" e retorna apenas o grupo de captura (o código SKU em si, sem o prefixo "SKU:"). Grupo 1 isola o valor dentro dos parênteses.

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

Saída

WH-1000XM5
4

Extrair números de telefone de listagens de empresas

Corresponde a números de telefone brasileiros no formato (XX) XXXX-XXXX. O parâmetro removeHtml garante que números de telefone divididos em tags HTML sejam capturados corretamente.

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

Saída

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

Casos de Uso

E-commerce

Monitoramento de Preços em Múltiplos Varejistas

Acompanhe preços de produtos em diferentes varejistas usando padrões regex que correspondem ao formato de preço de cada site. Funciona mesmo quando as estruturas HTML diferem entre sites, já que o regex direciona o padrão de preço em si em vez da marcação circundante.

Vendas

Geração de Leads de Diretórios de Empresas

Extraia informações de contato (e-mails, números de telefone, endereços) de diretórios de empresas e páginas amarelas. Padrões regex correspondem confiavelmente a formatos de dados estruturados como números de telefone e e-mails independentemente de como são exibidos na página.

Gestão de Estoque

Extração de SKU de Catálogos de Produtos

Extraia códigos de produto, SKUs e números de modelo de catálogos de fornecedores e sites de fabricantes. Use regex para corresponder a formatos de código específicos da empresa (por exemplo, "XX-####-YY") e construa bases de dados de produtos abrangentes.

Jurídico

Extração de Referências de Documentos Legais

Extraia números de caso, referências de estatutos e citações de regulamentos de bases de dados legais e sites de tribunais. Regex corresponde precisamente a formatos de citação como "Lei 8.078/90" ou números de processo.

Desenvolvimento de Software

Rastreamento de Números de Versão e Changelogs

Monitore páginas de lançamento de software e changelogs para rastrear números de versão, datas de lançamento e frequências de atualização. Padrões regex como "v\d+\.\d+\.\d+" extraem confiavelmente números de versão semântica de qualquer formato de página.

Pesquisa de Marketing

Coleta de Dados de Perfis de Redes Sociais

Extraia contagens de seguidores, métricas de engajamento e informações de perfil de páginas públicas de redes sociais. Regex lida com os vários formatos de números (1,2K, 1.200, 1200) usados em diferentes plataformas.

Dicas Profissionais

DICA

Sempre teste seu regex em regex101.com antes de usá-lo na planilha. Cole o código HTML fonte (ou conteúdo de texto se usar removeHtml) como a string de teste para verificar se seu padrão corresponde corretamente.

DICA

Use quantificadores não-gulosos (*? e +?) em vez de gulosos (* e +) ao corresponder conteúdo entre delimitadores. Por exemplo, "<b>.*?</b>" corresponde a elementos bold individuais, enquanto "<b>.*</b>" corresponde a tudo desde o primeiro <b> até o último </b>.

DICA

Combine removeHtml com padrões de texto simples para resultados mais confiáveis. Regex em texto limpo é muito mais fácil de escrever e manter que regex em HTML bruto com todos seus atributos e tags aninhadas.

DICA

Use grupos de captura estrategicamente: envolva apenas a parte que você quer extrair em parênteses e defina o parâmetro group de acordo. Isso permite usar texto circundante como âncoras de contexto sem incluí-lo na saída.

DICA

Para extrair dados estruturados como tabelas, considere usar SCRAPE_BY_CSS_PATH ou SCRAPE_BY_XPATH. Regex funciona melhor para extrair padrões de dados específicos (números, códigos, e-mails) em vez de navegar estrutura de documentos.

A função busca a URL alvo, opcionalmente remove tags HTML (quando removeHtml é TRUE), e então aplica seu padrão regex. Todas as correspondências são retornadas, com múltiplas correspondências aparecendo como linhas separadas na sua planilha. Se você usar grupos de captura no seu padrão, especifique qual grupo retornar com o parâmetro group, onde 0 retorna a correspondência completa e 1 retorna o primeiro grupo de captura.

O parâmetro removeHtml é particularmente útil quando os dados que você precisa se espalham por tags HTML. Por exemplo, um preço pode ser renderizado como "<span class="currency">R$</span><span class="amount">29.99</span>", que é difícil de corresponder com um único regex em HTML bruto. Definir removeHtml como TRUE colapsa isso em "R$29.99", tornando seu padrão regex mais simples e confiável.

Para sites que geram conteúdo com JavaScript, habilite o parâmetro renderJs para usar um navegador headless. Isso garante que o regex seja aplicado ao conteúdo da página totalmente renderizado em vez de apenas o código HTML fonte inicial.

SCRAPE_BY_REGEX se destaca em cenários onde os dados alvo não têm estrutura HTML consistente mas têm um formato de texto consistente. Também é valiosa como alternativa quando seletores CSS e XPath falham devido a marcação ofuscada ou gerada dinamicamente. Aplicações comuns incluem monitoramento de preços, extração de informações de contato, coleta de SKU e códigos de produto, e fluxos de trabalho de validação de dados.

Erros Comuns

No matches found

Causa: O padrão regex não corresponde a nenhum conteúdo na página. Isso pode acontecer se o padrão é muito específico, o conteúdo é renderizado via JavaScript, ou tags HTML estão interferindo com a correspondência de texto.

Correção: Tente habilitar removeHtml para corresponder a texto plano em vez de HTML bruto. Verifique seu regex em regex101.com usando o código fonte da página como string de teste. Se o conteúdo é carregado dinamicamente, habilite renderJs.

Error: URL and regex are required

Causa: Um ou ambos os parâmetros obrigatórios estão ausentes ou vazios.

Correção: Certifique-se de que tanto a URL (incluindo protocolo) quanto o padrão regex estejam fornecidos como strings não vazias. Verifique se as referências de célula apontam para células com valores.

Error: Invalid regular expression

Causa: O padrão regex contém um erro de sintaxe como parênteses não correspondentes, sequências de escape inválidas ou classes de caracteres malformadas.

Correção: Valide seu regex em regex101.com. Problemas comuns incluem caracteres especiais sem escape (parênteses, colchetes, pontos precisam de barras invertidas se usados literalmente), delimitadores de grupo não correspondentes e posições de quantificador inválidas.

Perguntas Frequentes

Em fórmulas do Google Sheets, strings são cercadas por aspas duplas. Como regex usa barras invertidas para caracteres especiais (\d para dígitos, \s para espaços em branco), e o analisador de fórmulas do Sheets não interpreta barras invertidas como caracteres de escape dentro de strings, você as escreve como barras invertidas simples: "\d+" corresponde a um ou mais dígitos. Se você está vendo comportamento inesperado, tente o padrão com removeHtml definido como TRUE para simplificar o conteúdo sendo correspondido. Teste seu regex em regex101.com antes de usá-lo na função.

Grupo 0 (o padrão) retorna todo o texto correspondente. Grupo 1 retorna apenas o texto dentro do primeiro conjunto de parênteses no seu padrão. Por exemplo, com o padrão "Preço: (R\$[0-9,]+)" aplicado ao texto "Preço: R$29,99", grupo 0 retorna "Preço: R$29,99" e grupo 1 retorna "R$29,99". Isso é útil quando você precisa corresponder a um padrão para contexto mas apenas extrair parte dele. Você pode ter múltiplos grupos de captura (grupo 2, grupo 3, etc.) adicionando mais seções entre parênteses ao seu padrão.

Habilite removeHtml (defina como TRUE) quando: (1) O texto que você quer corresponder está dividido em múltiplas tags HTML, como um preço exibido como "<span>R$</span><span>29</span>,<span>99</span>". (2) Tags HTML estão interferindo com suas correspondências de padrão. (3) Você quer corresponder apenas ao conteúdo de texto visível, ignorando toda marcação. (4) Seu regex é projetado para texto plano, não HTML. Deixe como FALSE quando você especificamente precisa corresponder a atributos HTML, nomes de tags ou estrutura de marcação.

O motor regex suporta flags inline usando a sintaxe (?flags) no início do seu padrão. Use "(?i)" para correspondência insensível a maiúsculas, "(?s)" para modo de linha única (ponto corresponde a quebras de linha), e "(?m)" para modo multilinha. Por exemplo, "(?i)preço:\s*R\$[0-9,]+" corresponde a variantes de "Preço:", "PREÇO:" e "preço:". Você pode combinar flags: "(?im)" habilita tanto modo insensível a maiúsculas quanto multilinha.

Por padrão, o regex é aplicado ao código HTML fonte bruto, que inclui todas as tags, atributos e marcação. Por exemplo, um padrão como "[A-Z][a-z]+" destinado a corresponder a palavras capitalizadas também pode corresponder a nomes de tags como "Div" ou "Span". Defina removeHtml como TRUE para remover todas as tags HTML primeiro, para que seu regex veja apenas o conteúdo de texto visível. Alternativamente, torne seu regex mais específico para excluir padrões HTML.

O motor regex suporta sintaxe completa compatível com PCRE incluindo lookaheads, lookbehinds, grupos sem captura, quantificadores preguiçosos e classes de caracteres. No entanto, padrões extremamente complexos com backtracking excessivo (como quantificadores aninhados como "(a+)+") podem causar erros de timeout. Mantenha os padrões tão simples e específicos quanto possível. Se você se encontrar escrevendo padrões regex muito longos, considere usar SCRAPE_BY_CSS_PATH ou SCRAPE_BY_XPATH para reduzir o conteúdo primeiro, então use regex no resultado.

REGEXEXTRACT é uma função nativa do Google Sheets que aplica um regex a texto já na sua planilha. SCRAPE_BY_REGEX busca uma página web e aplica o regex ao conteúdo da página, combinando busca web e extração em um único passo. Você poderia alcançar resultados similares usando SCRAPE_BY_CSS_PATH para obter o texto da página e então REGEXEXTRACT no resultado, mas SCRAPE_BY_REGEX é mais eficiente pois processa tudo no lado do servidor em uma requisição e pode retornar múltiplas correspondências.

Por padrão, o ponto (.) em regex não corresponde a caracteres de quebra de linha. Se você precisa corresponder através de quebras de linha, use a flag inline "(?s)" no início do seu padrão para habilitar o modo de linha única, onde ponto corresponde a qualquer caractere incluindo quebras de linha. Por exemplo, "(?s)<div class="product">.*?</div>" corresponde a uma div e todo seu conteúdo através de múltiplas linhas. A flag (?m) faz ^ e $ corresponderem ao início/fim de cada linha em vez da string inteira.

Funções Relacionadas

Comece a usar SCRAPE_BY_REGEX hoje

Instale o Unlimited Sheets para obter SCRAPE_BY_REGEX e outras 41 funções poderosas no Google Sheets.