SCRAPE_BY_XPATH
Extrai conteúdo usando expressão XPath (usa navegador headless para renderização JS).
=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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
url | string | Sim | A URL completa da página web a ser extraída (deve incluir https:// ou http://). |
xpath | string | Sim | Expressã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
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."
=SCRAPE_BY_XPATH("https://example.com", "//h1")Saída
Example DomainObter 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.
=SCRAPE_BY_XPATH("https://blog.example.com", "//a[contains(text(), 'Read More')]/@href")Saída
| /blog/post-1 |
| /blog/post-2 |
| /blog/post-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.
=SCRAPE_BY_XPATH("https://data.example.com/stats", "//table[@id='stats']//tr/td[2]")Saída
| 1,250 |
| 3,870 |
| 945 |
| 12,300 |
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.
=SCRAPE_BY_XPATH("https://shop.example.com", "//div[@data-available='true']//h3")Saída
| Bluetooth Speaker |
| Wireless Mouse |
| Phone Stand |
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.
=SCRAPE_BY_XPATH("https://example.com/about", "(//p)[last()]")Saída
Contact us for more information at info@example.com.Casos de Uso
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.
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.
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.
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.
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
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().
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.
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.
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 foundCausa: 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 requiredCausa: 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 failedCausa: 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.