🌐 Web ScrapingPro Plano

SCRAPE_BY_XPATH

Extrai conteúdo usando expressão XPath (usa navegador headless para renderização JS).

Assinatura da Fórmula
=SCRAPE_BY_XPATH(url, xpath)

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

Visão Geral

SCRAPE_BY_XPATH extrai conteúdo de páginas web usando expressões XPath, uma linguagem de consulta poderosa para navegar estruturas de documentos XML e HTML. XPath fornece capacidades além dos seletores CSS, incluindo a habilidade de percorrer para cima na árvore do documento, selecionar elementos pelo seu conteúdo de texto, usar lógica condicional e realizar cálculos dentro da própria consulta. Cada chamada SCRAPE_BY_XPATH usa um navegador headless para renderização completa de JavaScript, tornando-a a escolha preferida para extrair sites dinâmicos modernos.

Parâmetros

ParâmetroTipoObrigatórioDescrição
urlstringSimA URL completa da página web a ser extraída (deve incluir https:// ou http://).
xpathstringSimExpressão XPath direcionada ao(s) elemento(s) a extrair. Exemplos: "//h1" (todos os elementos h1), "//div[@class='content']" (divs com classe "content"), "//a/@href" (todas as URLs de links), "//table//tr/td[2]" (segunda coluna de todas as linhas da tabela).

Exemplos

1

Extrair o título principal de uma página

Seleciona o primeiro elemento h1 na página e retorna seu conteúdo de texto. A barra dupla "//" significa "encontrar em qualquer lugar no documento."

fx
=SCRAPE_BY_XPATH("https://example.com", "//h1")

Saída

Example Domain
2

Obter todos os links contendo texto específico

Usa a função contains() para encontrar elementos anchor cujo texto inclui "Leia mais" e extrai seus atributos href. Demonstra seleção baseada em texto do XPath que CSS não pode replicar.

fx
=SCRAPE_BY_XPATH("https://blog.example.com", "//a[contains(text(), 'Read More')]/@href")

Saída

/blog/post-1
/blog/post-2
/blog/post-3
3

Extrair segunda coluna de uma tabela de dados

Navega para uma tabela específica pelo seu ID, então seleciona a segunda célula (td[2]) de cada linha. Perfeito para extrair uma única coluna de dados tabulares.

fx
=SCRAPE_BY_XPATH("https://data.example.com/stats", "//table[@id='stats']//tr/td[2]")

Saída

1,250
3,870
945
12,300
4

Extrair nomes de produtos de elementos com atributos de dados específicos

Direciona apenas produtos em estoque filtrando por um atributo de dados, então extrai o elemento h3 dentro de cada container correspondente.

fx
=SCRAPE_BY_XPATH("https://shop.example.com", "//div[@data-available='true']//h3")

Saída

Bluetooth Speaker
Wireless Mouse
Phone Stand
5

Obter o último parágrafo em uma página

Usa a função XPath last() para selecionar apenas o elemento de parágrafo final. Demonstra capacidades de seleção posicional únicas do XPath.

fx
=SCRAPE_BY_XPATH("https://example.com/about", "(//p)[last()]")

Saída

Contact us for more information at info@example.com.

Casos de Uso

Finanças

Extração de Dados Financeiros

Extraia preços de ações, métricas financeiras e dados de mercado de portais financeiros e páginas de relações com investidores. XPath permite o direcionamento preciso de células de tabela específicas e widgets financeiros carregados dinamicamente.

Setor Público

Coleta de Dados Governamentais

Extraia registros públicos, arquivamentos regulatórios e relatórios estatísticos de sites governamentais. XPath lida com as estruturas de tabela complexas e formatos de documentos aninhados comumente usados em portais governamentais.

Desenvolvimento Web

Auditorias de Migração de Conteúdo

Audite conteúdo de sites legados antes da migração extraindo texto, imagens, metadados e links internos usando XPath. Construa inventários de conteúdo abrangentes que mapeiam URLs antigas para seus ativos extraídos.

Gestão de Produtos

Comparação de Recursos de Concorrentes

Extraia páginas de preços de concorrentes e listas de recursos para construir matrizes de comparação. Use XPath para extrair nomes de recursos, indicadores de disponibilidade e detalhes de níveis de preços em planilhas organizadas.

Relações Públicas

Monitoramento de Notícias e Mídia

Monitore sites de notícias e bases de dados de press releases para menções à marca, extraindo títulos de artigos, datas de publicação e nomes de autores. A seleção baseada em texto do XPath ajuda a filtrar artigos mencionando palavras-chave específicas.

Dicas Profissionais

DICA

Use o atalho do console do navegador $x("//seu/xpath") para testar rapidamente expressões XPath antes de usá-las na sua planilha. Isso é mais rápido que o método document.evaluate().

DICA

Quando nomes de classe contêm espaços (múltiplas classes), use contains(@class, "classe-alvo") em vez de @class="classe-alvo" para corresponder a elementos que têm a classe alvo entre várias classes.

DICA

Use o operador pipe | para combinar múltiplas expressões XPath em uma única consulta: "//h1 | //h2 | //h3" seleciona todos os cabeçalhos de nível superior. Os resultados são retornados na ordem do documento.

DICA

Para tabelas, use "//table[1]//tr/td[1]" para obter a primeira coluna e "//table[1]//tr/td[2]" para obter a segunda coluna. Coloque estes em colunas adjacentes da planilha para reconstruir a estrutura da tabela.

Expressões XPath permitem que você direcione elementos com precisão que seletores CSS não podem igualar. Você pode selecionar elementos baseados no seu conteúdo de texto (//a[contains(text(), "Comprar agora")]), navegar para elementos pai ou irmãos (//span[@class="price"]/parent::div), combinar múltiplas condições (//div[@class="product" and @data-available="true"]), e até usar funções como position(), last() e string-length() dentro de suas consultas.

Como SCRAPE_BY_XPATH sempre renderiza JavaScript, ela lida confiavelmente com aplicações de página única, conteúdo carregado dinamicamente, seções de scroll infinito e frameworks renderizados no lado do cliente como React, Vue e Angular. Isso a torna ligeiramente mais lenta que SCRAPE_BY_CSS_PATH em modo padrão, mas garante que você sempre obtenha o conteúdo da página totalmente renderizado.

A função retorna uma string única quando um elemento corresponde, ou um array 2D com um valor por linha quando múltiplos elementos correspondem. Este formato de saída se integra naturalmente com o Google Sheets, permitindo que você use os resultados com FILTER, SORT, UNIQUE e outras funções de array para processamento adicional de dados.

SCRAPE_BY_XPATH é particularmente valiosa para analistas de dados, profissionais de SEO e pesquisadores que precisam de controle preciso sobre quais elementos extraem e estão confortáveis com a sintaxe XPath.

Erros Comuns

No matches found

Causa: A expressão XPath não corresponde a nenhum elemento na página renderizada. Isso pode acontecer se a expressão tem um erro de sintaxe, o elemento alvo está dentro de um iframe ou Shadow DOM, ou os nomes de classe são gerados dinamicamente.

Correção: Teste o XPath no console do seu navegador usando $x("seu-xpath-aqui"). Verifique erros de digitação em nomes de elementos e valores de atributos. Se o elemento está dentro de um iframe, tente extrair a URL do iframe diretamente.

Error: URL and XPath are required

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

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

Error: XPath evaluation failed

Causa: A expressão XPath contém um erro de sintaxe que impede sua avaliação. Problemas comuns incluem aspas não correspondentes, nomes de função inválidos ou predicados malformados.

Correção: Revise sua expressão XPath em busca de erros de sintaxe. Certifique-se de que as aspas estejam corretamente correspondidas (use aspas simples dentro de aspas duplas ou vice-versa). Verifique se os nomes de função estão escritos corretamente. Teste a expressão no console do navegador primeiro.

Perguntas Frequentes

Seletores CSS e XPath ambos direcionam elementos HTML, mas diferem em capacidades. Seletores CSS são mais simples e funcionam bem para selecionar elementos por classe, ID ou nome de tag (por exemplo, ".price", "#header", "h1"). XPath é mais poderoso e pode: percorrer para cima na árvore do documento (selecionar um pai baseado em um filho), filtrar por conteúdo de texto (//a[contains(text(), "Comprar")]), usar condições lógicas (and/or), selecionar por posição (//li[3]) e usar funções como string-length() e normalize-space(). Use seletores CSS para extração simples e XPath quando você precisa de capacidades de consulta avançadas.

Sim. Ao contrário de SCRAPE_BY_CSS_PATH que oferece renderização de JavaScript como parâmetro opcional, SCRAPE_BY_XPATH sempre usa um navegador headless que executa completamente JavaScript antes de avaliar a expressão XPath. Isso significa que funciona confiavelmente em todos os tipos de sites incluindo aplicações de página única, mas é mais lento que SCRAPE_BY_CSS_PATH em modo padrão (sem JS). Se velocidade é uma prioridade e a página alvo não requer renderização de JavaScript, considere usar SCRAPE_BY_CSS_PATH.

Adicione /@nomeAtributo à sua expressão XPath. Por exemplo, para obter todas as fontes de imagem: "//img/@src". Para obter atributos href de links: "//a/@href". Para obter o valor de um atributo de dados personalizado: "//div/@data-product-id". Você também pode combinar extração de atributos com filtros: "//a[@class='external']/@href" obtém valores href apenas de links com a classe "external".

Sim, este é um dos recursos mais poderosos do XPath. Use text() para corresponder conteúdo de texto: "//a[text()='Clique aqui']" corresponde a links com o texto exato "Clique aqui". Use contains() para correspondências parciais: "//p[contains(text(), 'preço')]" corresponde a parágrafos contendo a palavra "preço". Use starts-with() para correspondência de prefixo: "//div[starts-with(@class, 'product-')]" corresponde a divs cuja classe começa com "product-". Esses seletores baseados em texto não estão disponíveis com seletores CSS.

Causas comuns incluem: (1) O elemento está dentro de um iframe, que é um documento separado que o XPath não pode alcançar. (2) O elemento está dentro de um componente Shadow DOM, que cria uma árvore DOM encapsulada. (3) A sintaxe XPath tem um erro, como aspas incorretas ou problemas de namespace. (4) A página usa nomes de classe dinâmicos que mudam em cada carregamento (comum com bibliotecas CSS-in-JS). Teste seu XPath no console do navegador usando document.evaluate() ou o atalho $x(): $x("//seu/xpath/aqui") para verificar se corresponde aos elementos esperados.

A maioria das páginas HTML modernas não requer tratamento de namespace, e o scraper as processa como HTML padrão. No entanto, se você encontrar problemas de namespace (tipicamente com documentos XML ou XHTML estritos), tente usar a função local-name() no seu XPath: "//*[local-name()='div']" em vez de "//div". Isso ignora prefixos de namespace e corresponde elementos apenas pelo seu nome de tag local.

XPath fornece muitas funções integradas: position() retorna índice de elemento (//li[position()<=3] obtém os primeiros 3 itens de lista); last() seleciona o último elemento ((//p)[last()]); count() conta elementos (//ul[count(li)>5] seleciona listas com mais de 5 itens); normalize-space() remove espaços em branco extras; translate() converte caracteres; concat() junta strings; e not() nega condições (//div[not(@class="hidden")] seleciona divs visíveis). Essas funções podem ser combinadas para consultas complexas.

Funções Relacionadas

Comece a usar SCRAPE_BY_XPATH hoje

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