Vamos supor que, por falta de sexo, você se divirta levantando dados sobre municípios brasileiros.
Umas das melhores fontes, depois do IBGE e Associação dos Municípios, seria a Wikipédia. Mas você vai clicar em 5560 páginas? Não! Existe uma maneira mais complicada e divertida de fazer isto.
Primeiro abra uma googlenilha e obtenha, com o seguinte comando, uma lista de municípios (no caso, do Rio Grande do Sul que começam com a letra A):
=importHtml("http://pt.wikipedia.org/wiki/Anexo:Lista_de_municípios_do_Rio_Grande_do_Sul";"list";1)
Você pode usar os índices de listas de cidades começando com a letra A (1) até a letra Z (26).
Em outra folha da planilha, obtenha um dado da primeira cidade da lista com este comando:
=importXML(CONCATENATE("http://pt.wikipedia.org/wiki/";Página1!A1);"//table[@class='infobox']/tr[22]/td")
O CONCATENATE monta o endereço URL da página, na Wikipédia, do primeiro município da lista, na folha Página1, célula A1.
O importXML pega a página no endereço e extrai os dados conforme o XPath (da célula <td> da 22ª linha <tr> — no caso, é a população — da tabela <table> de classe CSS “infobox” — no caso, é a ficha do município — da primeira cidade da lista).
Puxe a célula para baixo pelo cantinho para replicá-la para todas as cidades da lista.
Na Wikipédia, espera-se que todos os dados correspondentes estejam na mesma posição da tabela, porque são gerados por “predefinições”.
Cotações
Um bom uso desta função, por exemplo, pode ser a recuperação de cotações de ações da Bovespa. Um investidor pode ter numa só planilha toda sua carteira de ações com fórmulas como esta:
=importXML("http://www.bmfbovespa.com.br/Pregao-Online/ExecutaAcaoAjax.asp?CodigoPapel=VALE3";"//Papel/@ultimo")
Troque “vale3” por “petr3” ou qualquer outro código de ações. Em vez de “ultimo”, podem ser filtrados os parâmetros dentro do nó <Papel Codigo=”VALE3″ Nome=”VALE ON N1″ Ibovespa=”#” Data=”19/11/2009 19:29:47″ Abertura=”48,05″ Minimo=”47,75″ Maximo=”48,80″ Medio=”48,27″ Ultimo=”48,80″ Oscilacao=”0,49″/>. Mas devem ser colocados todos em minúscula.
[Atualização 2012-01-12]
Uma outra fórmula para pegar a cotação de uma ação é esta, da PETR4:
=ImportXML("http://www.bmfbovespa.com.br/Pregao-online/ExecutaAcaoCotRapXSL.asp?gstrCA=&txtCodigo=PETR4&intIdiomaXsl=0";"//table[@id='tbCotacoesInfo']/tr[1]/td[2]")
Para ajudar a descobrir o xPath correto dos dados, uso o plugin Firefox Xpath Generator.
Limitações
- Por enquanto, as googlenilhas só aceitam 50 fórmulas importXML por folha.
- Dá um trabalho do Cão. Isto é só um exemplo didático de como extrair dados da rede pelo Google Planilha. Além da Wikipédia, dá pra usar arquivos texto e CSV. Por exemplo, arquivos de cotações atualizadas frequentemente.
Bibliografia
- XPath
- XPath Tutorial
- XPath Generator
- Google. Ajuda do Docs. Funções: Que funções posso usar para obter dados externos?
- Wikipedista hardcore Leonardo Stabile
- Dados de cabeçalho HTTP obtidos com o plugin Live HTTP Headers para browser Firefox.
Excelente dica ! Obrigado por compartilhar.
Com relação ao Excel, ainda que ele não tenha a função pronta,
daria para criar uma “macro” com o IMPORTXML para obter este mesmo resultado da googlenilha?
E valeu mesmo! Foi uma ótima dica.
Flávio
Obrigado, Flavio!
Imagino que dê para fazer uma macro no Excell, sim. Não saberia dizer se a linguagem macro interpreta XPaths…
Como faria isso no OpenOffice Calc ou no Excel?
Olá,Hugo!
As Googlenilhas são baseadas no OpenOffice.org, mas só há a função HYPERLINK(). OOo não possui IMPORTXML, por enquanto…