Faz tempo, né?
Mas espero que este post seja bem interessante para os meus dois leitores...
O tema: algo que vem me fascinando há algum tempo - APIs ou "Application Programmable Interfaces", Interfaces que muitos sites tem para facilitar a consulta e o uso dos dados neles hospedados.
Em muitos casos, para usar uma API, basta o registro do seu e-mail (verdadeiro, pois nele você receberá um link para confirmação ou a sua própria senha (key) de acesso).
Os termos para utilização variam muito de site para site, e o número de consultas que é permitido no plano gratuito também.
E o que eu quero fazer?
Mostrar como você pode utilizar o Excel 2013 que tem 3 lindas funções para Web para fazer consultas direto a uma API, SEM NECESSIDADE de qualquer programação!
Neste caso usarei a API do site http://www.wunderground.com/, que fornece dados gratuitos sobre o tempo atual e a previsão ds próximos dias. Os limites de uso para o registro gratuito são bem apertados, confesso que "estourei" o meu pois você pode fazer só 10 consultas por minuto, e fiz bem mais que isso.
Qual era meu objetivo?
Descobrir as condições do tempo em diversas cidades brasileiras. Veja o resultado a seguir para algumas cidades. Note que eu usei os códigos dos aeroportos. Por exemplo, CGH é o aeroporto de Congonhas, e GRU é o de Guarulhos, e ambos servem São Paulo. Por que fiz isso? Em alguns casos o site do wunderground nao conseguia achar os dados para a cidade, e tive a ideia de procurar por aeroporto. Bingo! Existiam informações para todos os aeroportos que eu queria...
Agora que você já viu que funciona, vamos ao "como fazer"...
Atenção - o help do Excel 2013 em inglês tem um "how to" excelente para o uso destas novas funções, e inclusive usa o mesmo site como exemplo, mas procura por dados nos EUA, o que leva a uma consulta um pouco diferente.
Supondo que você já tenha se registrado no site e tenha obtido sua API_key, e a colocado numa célula da planilha que eu convenientemente chamei de (adivinhe?) API_key, o próximo passo é escrever o comando:
=SERVIÇOWEB("http://api.wunderground.com/api/"&API_Key&"/geolookup/conditions/forecast/q/Brazil/"&C$4&".xml")
O que a célula C$4 contém? Na planilha que eu acabei de mostrar para vocês, o código do aeroporto, por exemplo, SDU para o Santos Dumont.
O resultado da função SERVIÇOWEB acima é um arquivo .xml que tem um MONTE de informações sobre o local que você está investigando, inclusive a previsão dos próximos dias. Esta função SERVIÇOWEB é talvez a mais importante das 3 novas funções para Web do Excel 2013, e em seguida mostraremos outra.
Suponha que o resultado da função SERVIÇOWEB acima esteja na célula C3 da sua planilha.
Como eu falei, o conteúdo desta célula C3 é um arquivo .xml, no qual você tem que "pescar" a informação que te interessa (e este tem sido o meu grande problema). Para isso use a função FILTROXML, a segunda das 3 novas do Excel 2013.
Por exemplo:
=FILTROXML(C$3;"//local_time_rfc822")
Fornece a data e horário da consulta. No caso da imagem neste post, o resultado é:
Sun, 23 Feb 2014 15:16:32 -0300
Em resumo, a sintaxe da função FILTROXML é: FILTROXML(cél. que contem o arquivo xml, xpath).
E onde está a encrenca? Em definir o xpath...
No meu caso está sendo meio tentativa e erro - funciona mais ou menos como estrutura de diretórios e subdiretórios e existem aplicativos que "pegam" um arquivo .xml e te dizem qual o xpath correto para o "pedaço" de informação que você quer. Em teoria... na prática não consegui fazer funcionar para mim!
O post está meio grande e eu vou me despedindo, mas antes gostaria de dizer que:
1) O Yahoo tem uma API maravilhosa (e grátis), inclusive com uma linguagem de programação moleza, que é uma parente de SQL mas é uma obviedade! Lindo!
2) Existe um número enorme (e crescente) de APIs. Neste momento em que escrevo o post, o site: www.programmableweb.com lista 11063 APIs, sendo que 53 foram adicionadas nos últimos 7 ias e 208 nos últimos 30 dias. Isso deve significar algo, não é?
3) É claro que você pode programar as suas chamadas às APIs. Em R existe um pacote XML, mas eu ainda não usei. Ex
Nenhum comentário:
Postar um comentário