Olá leitores da Agência Mestre,
Nestes últimos anos que venho trabalhando com SEO, uma das áreas que tenho mais concentrado energia é no entendimento de tarefas da agência. Quando falamos das tarefas através da ótica de um gerente ou do dono da agência, tentamos observar não somente o quão bem uma tarefa é realizada, mas também o tempo em que ela é realizada. Esta análise de tempo nos passa a uma ótica mais precisa, onde tentamos responder a seguinte pergunta: podemos fazer esta tarefa em uma tempo menor?
Este tipo de análise é o que faço nos dias de hoje aqui na Agência Mestre, tentando identificar tarefas repetitivas e cansativas para os nossos analistas e assistentes. Diante desta repetição, juntamente com o nosso time de desenvolvimento, criamos aplicações para minimizar o esforço dos nossos analistas e assim dar a toda a agência um melhor rendimento.
E diante desta onda de programação e criação de aplicações para minimizar o tempo, aprendi uma técnica muito boa, utilizando o famoso Google Docs, o “pacote office” do Google. Nele, mais especificamente na parte de planilhas, existe uma função chamada ImportXML, onde é possível utilizá-la para ler documentos publicados na Internet.
Introdução ao ImportXML
O ImportXML é uma função existente no Google Docs que lhe permite ler informações de arquivos xml, html, csv, tsv, e até feeds RSS ou Atom. Desta forma, através de uma planilha criada no Google Docs, você pode chamar um arquivo externo e combinar com um sistema de navegação do conteúdo, chamado XPath, para conseguir entender e analisar os dados de arquivos.
Um exemplo simples de chamada do ImportXML é o seguinte:
=importXml(“www.google.com”; “//a/@href”).
Este código, basicamente, retorna todas as URLs contidas em todas as tags “a” na página inicial do Google.
O XPath
O XPath é uma sintaxe de navegação de elementos e atributos de um arquivo XML reconhecido pela W3C. Com este tipo de navegação é possível abrir um arquivo XML, por exemplo, e navegar entre os nós pais, filhos e filhos dos filhos.
Os Nós
No XPath, existem diversos tipos de nós, os quais compõe um arquivo XML formando uma árvore. O nó no topo da árvore é chamado de raiz (aqui no caso, pense em uma árvore invertida). A partir da raiz, podemos aprofundar mais e mais, analisando cada uma de suas ramificações.
Por exemplo, observe o seguinte código XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
Deste código, podemos visualizar os seguintes nós do XML:
<bookstore> (elemento raiz)
<author>J K. Rowling</author> (elemento)
lang="en" (atributo)
Valores Atômicos
Os valores atômicos são os nós que não possuem filhos ou pais. Por exemplo, considerando ainda o código do XML inicial, podemos identificar os seguintes valores atômicos:
J K. Rowling "en"
Relacionamento entre Nós
Conforme venho comentando, a estrutura de um arquivo organizado, como o XML, é composta de relacionamento entre os nós da árvore. Para cada passo mais profundo na árvore estabelecemos uma relação de parentesco. Considerando o código de exemplo abaixo, o nó “book” é o pai dos nós title, author, year, e price.
<book>
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
Ainda no exemplo acima, mas com outra visão, os nós title, author, year, e price são nós filhos do nó “book”.
Outra nomeclatura importante além de nós pais e nós filhos, é a de ancestrais e decendentes. No exemplo acima, os ancestrais do nó “title” são os nós “book” e “bookstore”. Por outro lado, os decendentes do nó “bookstore” são book, title, author, year, e price.
Sintaxe do XPah
Para explicar a sintaxe do XPath, vamos considerar o seguinte trecho de um XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book> </bookstore>
Selecionando Nós
O XPath utiliza expressões para conseguir navegar entre os nós do documento XML. As expressões mais comuns para fazer a navegação são:
Expressão | Descrições |
---|---|
nome do nó | Seleciona todos os nós filhos do nó especificado |
/ | Seleciona a partir do nó raiz |
// | Seleciona nós no documento a partir do nó corrente que correspondem com a seleção, não importando onde eles estão |
. | Seleciona o nó atual |
.. | Seleciona o nó pai do nó atual |
@ | Seleciona atributos |
Tendo em vista as expressões acima, o resultado da aplicação delas em nosso XML de exemplo seria:
Expressão | Resultado |
---|---|
bookstore | Seleciona todos os nós filhos do elemento “bookstore” |
/bookstore | Seleciona o elemento raiz “bookstore”.
Nota: Se a expressão iniciar com uma barra ( / ) ela irá sempre representar o caminho absoluto it para um elemento! |
bookstore/book | Seleciona todos os elementos “book” que são filhos da “bookstore” |
//book | Seleciona todos os elementos “book” no importando onde eles estejam no documento. |
bookstore//book | Seleciona todos os elementos “book” que são descendentes do elemento “bookstore”, não importando onde eles estejam dentro do elemento “bookstore”. |
//@lang | Seleciona todos os atributos que estão nomeados como “lang”. |
Exemplo de Leitura de Página
Para entender melhor como podemos combinar o XPath com o ImportXML no Google Docs, crie uma planilha simples no Gdocs. Para o nosso exemplo vamos fazer uma solicitação na página inicial da Agência Mestre. Vamos buscar pelo título da página.
Pois bem, para isto, vamos chamar a seguinte função na nossa planilha:
=ImportXML(“https://www.agenciamestre.com”;”//title”)
Neste caso, a nossa expressão do XPath solicita que encontremos todos os nós “title” não importando a localização no documento, ou seja, tanto faz, no início, meio ou fim do documento. Ao chamar esta função, a planilha irá retornar a resposta:
Agência Mestre – Otimização de Sites (SEO)
Um outro exemplo, ainda em cima da página inicial da Agência Mestre, seria solicitar todos os links existentes na página. Um detalhe para este caso é que desejamos saber apenas o texto âncora, ou seja, o conteúdo do nó. Para isto, devemos chamar a seguinte função na nossa planilha:
=ImportXML(“https://www.agenciamestre.com”;”//a”)
Com isto, a planilha irá nos mostrar todos os textos âncoras existentes em todos os links. Agora imagine que precisamos das URLs que os links apontam. Para isto, temos que chamar a seguinte função:
=ImportXML(“https://www.agenciamestre.com”;”//a/@href”)
Na função do XPath, solicitamos todos os nós “a”, em qualquer parte do documento, e, em seguida, pedimos todos os conteúdos dos atributos “href” destes nós “a”. Assim, a função retorna todas as URLs de links da página.
Conclusões e Recomendações
Como pudemos ver o ImportXML é uma função muito interessante do Google Docs, onde podemos utilizá-lo para a leitura de arquivos estruturados. Seja uma página HTML, seja um XML, seja um feed RSS, podemos utilizar esta função para obter dados e analisá-los dentro de uma planilha do Gdocs.
Nos próximos artigos estaremos cobrindo diversas aplicações utilizando o ImportXML, tais como análise On Page, de backlinks e até mesmo de métricas para social media.
Espero que vocês tenham gostado desta primeira abordagem e até o próximo artigo!
Muito bom, mas muito bom mesmo Fábio!
Parabéns pelo post, eu sempre ficava em dúvida sobre como utilizar o importXML, esclareceu tudo!
Achei um comando legal, que retorna os 100 primeiros resultados de busca no Google:
=ImportXML(“http://www.google.com/search?q={KEYWORD}&num=100”, “//h3[@class=’r’]/a/@href”)
Parabéns!
Parabéns ótimo post, eu tentei usar esse comando no site de social search 48ers e deu erro.
Tem alguma dica?
Abs
Cara gostei da dica, vou utilizar aqui, tava lendo atras de XML e tirei minhas dúvidas aqui.
[]’s
Muito legal! Eu não sou programador, mas graças ao Google Docs, eu tenho criado alguns APIs e estou me divertindo bastante. Seria bacana ver mais tutoriais desse tipo por aqui, que tal o próximo ser sobre importação de feeds? Abraço
Muito interessante essas dicas, Fábio, valeu!
estou tentando de tudo para fazer funcionar para minha planilha, mas não consigo configurar o XPath, veja o exemplo abaixo, preciso colocar na minha planilha o valor de 39,98, mas tento de tudo e vem N/A
Por favor me ajude
grato
andre Tavares
De:
R$ 49,90
Por:
R$39,98
qual o seu erro exatamente?