27/5/2009 | Tags:api, Open Strategy, searchmonkey, webservice, yahoo!, yql | Escrito por: Dirceu Pauka Jr.
YQL é uma linguagem que permite buscas nas bases de dados do Yahoo ou em documentos especificados pelo desenvolvedor.
Uma boa maneira de entender o uso dessa linguagem é ver um pouco de código.
JS-Placemaker – geolocate texts in JavaScript é uma demonstração de como utilizar a YQL para buscar informações em uma API do Yahoo chamada Placemaker.
Dê uma olhada no código.
O exemplo usou o Placemaker, porém as outras APIs do Yahoo também podem ser buscadas.
Vamos a outro exemplo, dessa vez utilizando dados de outra API.
API do Twitter pelo Yahoo! YQL
Para quem nunca usou a API do Twitter existe um guia sobre a API.
Twitts de Usuário
Para ver alguns twitts de um certo usuário existe o método statuses/user_timeline. A entrada para ele é o ID do usuário.
Como especificado, uma requisição HTTP para esse método se parece com:
http://twitter.com/statuses/user_timeline.xml?user_id=12345
No YQL é tão simples quanto:
select * from twitter.user.timeline where id=12345

Esse exemplo utilizou a tabela do Twitter que faz parte do projeto DataTables. Projeto que reúne várias tabelas criadas por outros desenvolvedores.
Então é possivel criar novas tabelas!?
É sim! É possivel até mandar o Yahoo fazer screen scraping e retornar o resultado em JSON!
Mais um exemplo!
Digamos que eu quero fazer um widget para retornar alguns produtos do Submarino.
Cumprindo seu papel de maior e-commerce brasileiro o Submarino não dá a minima para os desenvolvedores e não possui até hoje uma API. Vamos “hackear” uma ;D
A busca pelo site é feito pelo seguinte HTTP GET: http://www.submarino.com.br/busca?q=ipod
Usaremos essa URL para buscar dados no Submarino utilizando a YQL.
A primeira parte para fazer o YQL ler documentos é simples:
select * from html where url=”http://www.submarino.com.br/busca?q=ipod”
A segunda é um pouco complicada. Para entender é necessário o minimo de conhecimento sobre XPath.
Para extrair o XPath da parte desejada do conteúdo usei o Firebug, porém é possivel usar o XPather também.
No Firebug use o “Inspect” para encontrar o elemento desejado:

Copie o XPath:

Com o XPath do elemento HTML “pai” do produto temos a chamada YQL completa.
select * from html where url=”http://www.submarino.com.br/busca?q=ipod” and xpath=’/html/body/div/div[2]/div/div/div/div/div/div/div[2]/div/div/div/ul/li/div/a[3]‘
Abra o Console do YQL e teste. Legal! Temos uma busca de produtos no Submarino retornando XML ou JSON e aprendemos a usar o YQL com APIs do Yahoo, com APIs do DataTables e com qualquer documento da Web ;D
Como fazer um widget de ofertas do Submarino com YQL
Outros artigos relacionados ao Yahoo Open Strategy:
Yahoo! Web Services – apresentação das APIs
SearchMonkey Monkey
Yahoo! SearchMonkey



1 Comentário so far
Leave a comment
Caramba!
Eu também fiz um serviço pra mastigar a página de busca do Submarino, até transformar em alguma coisa que parece JSON… Mas usei Yahoo!Pipes e o Zembly pra pós-processamento do JSON:
http://victor.hogemann.eti.br/2009/06/api-publica-do-submarino-nao-mas-quase.html
E até fiz um widget de busca com essa API usando ExtJS no Zembly:
http://victor.hogemann.eti.br/2009/03/supasubasearch.html
Mas com certeza o YQL é bem mais poderoso! Valeu pela dica, vou começar a brincar
By Victor Hogemann on 06.05.09 7:07 pm | Permalink
Deixe um comentário
Quebras de linha e parágrafo automáticas, seu email nunca será mostrado, HTML permitido:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>