Introdução ao YQL – Yahoo Query Language

Postado por: Pedro Rogério em
YQL - Yahoo Query Language

O YQL (Yahoo Query Language) é uma API do Yahoo criada para facilitar a vida dos desenvolvedores, onde ele reune milhares de serviços únicos. Essa API não é relativamente nova, já existe a um bom tempo, mas não vejo ninguém explorar seu potencial, por isso resolvi fazer esse post.

O YQL funciona de maneira similar a um banco de dados, onde os serviços são disponibilizados através de tabelas, onde podemos fazer consultas através de uma sintaxe semelhante a do SQL, sim, você poderá selecionar os dados a partir de uma simples select, ou combinando com subselects, e etc…

Pelo console, quando selecionamos uma tabela, já é mostrado um exemplo de como seria sua consulta, o que facilita para quem não tem conhecimentos sólidos sobre SQL. Por padrão, são exibidas as tabelas referentes aos serviços do Yahoo!, mas qualquer um pode adicionar novos serviços desde que o mesmo seja proprietário das informações ou as mesmas sejam explicitamente de domínio público.

Para ter acesso as tabelas públicas, basta fazer o seguinte, acesse o console, logo a direita você verá o título DATA TABLES, basta clicar em: Show Community Tables

Introdução ao YQL - Yahoo Query Language

Agora você tem acesso a todas as tabelas comunitárias. A partir daqui você poderia, por exemplo, consultar a tabela do W3C e executar a seguinte query no console.

select * from w3c.check where uri='www.yahoo.com'

Essa query é responsável por verificar e validar o HTML, tudo através do YQL, e o retorno disso tudo é um XML ou JSON, a partir daí eu posso fazer o que quiser com essas informações.

Em um outro exemplo que fiz aqui, efetuo a seguinte consulta no console:

select * from html where url='http://www.cssnolanche.com.br' and xpath='//div[@class="shadow"]//h2'

Essa query é responsável por acessar meu outro blog, ler todo o HTML, e com XPath pegar todo o conteúdo que está dentro da tag h2, que consequentemente está dentro de uma div com a class shadow. Vá até o console, escolha a opção XML ou JSON, clique em test e veja o resultado.

Após, eu posso pegar a REST QUERY gerada e fazer um parser com jQuery.

Em um outro exemplo também poderia pegar meu últimos Tweets, com a seguinte query:

select * from twitter.user.timeline where screen_name='pinceladasdaweb'

E depois fazer o parser do JSON gerado.

Em uma consulta mais complexa, poderia mesclar o feed dos meus 2 blogs e depois filtrar somente pelo título dos posts:

select channel.item.title,channel.item.link, channel.item.pubDate
    from xml where url in(
      'http://feeds.feedburner.com/pinceladasdaweb',
      'http://feeds2.feedburner.com/CssNoLanche'
    )
  | unique(field="channel.item.link")
  | sort(field="channel.item.pubDate", descending="true")

As possibilidades de uso do YQL são infinitas, mostrei aqui 3 exemplos básicos de uso, mas como você pode ver, o Dirceu mostra em seu blog como é possível fazer um Widget com os produtos do Submarino através do YQL e XPath. Ou então o Luis Cipriani que criou um Mash up para saber a localização das feiras livres aos domingos mais próximas de sua casa.

Posts Relacionados

Confira também outros artigos interessantes postados aqui no blog.

Gostou desse post?

Assine o nosso Feed RSS, siga-nos no Twitter, ou simplesmente nos recomende a seus amigos!

Sobre Pedro Rogério

Pedro Rogério é desenvolvedor web por paixão, não saberia fazer melhor outra coisa. Além de escrever para o Pinceladas da Web também escreve para o CSS no Lanche, blog voltado ao desenvolvimento front-end.

4 Responses to “Introdução ao YQL – Yahoo Query Language”

  1. Celso disse:

    É Pedrão, o nosso curso de JS deu um gás em muita coisa para nós, belo post e assim que tiver um tempo vou fazer alguns exemplos desta API achei ela fantastica. =)

  2. Alexsandro disse:

    Ai sim em…. YQL é muito bom e útil, pena que quase ninguém falava.

  3. [...] mas não é possível ler um feed com JavaScript? Sim, é possível, como mostrei aqui com JavaScript + YQL, a desvantagem na utilização de JavaScript é que ele não gera um cache, ou seja, a cada [...]

Leave a Reply