YQL! Parte 1: O básico sobre busca de dados públicos

O problema de buscar dados públicos

Muitas vezes precisamos que nossa aplicação disponibilize dados os quais não temos em nosso banco de dados. Isso é muito comum atualmente com aplicações que precisam exibir as mensagens mais recentes de uma pessoa no twitter, a lista de amigos de alguém no facebook ou até mesmo as informações sobre os hospitais disponíveis em uma dada região.

Em todos esses casos, as informações existem, mas não a temos em nossa aplicação. Justamente para isso, muitos serviços atualmente fornecem uma API para que seja possível recuperar e manipular esses dados. No entanto, o mundo não é perfeito e a grande maioria dos dados que precisamos não estão disponíveis em uma API que seja fácil de acessar. Consequência? Temos que usar os famigerados “crawlers”, que são scripts que acessam uma ou mais páginas em busca de informações que nos sejam úteis, mas nem sempre escrever um crawler é uma tarefa simples.

YQL! – Yahoo Query Language

Justamente para facilitar a consulta de dados públicos na internet, o Yahoo! criou uma ferramenta chamada YQL! (Yahoo! Query Language). O objetivo é que seja disponibilizada uma linguagem semelhante ao SQL, porém com o objetivo de realizar consultas em sites na web. Para utilizarmos, não precisamos de muito, basta acessar o console disponível em http://developer.yahoo.com/yql/console/ e brincar com as queries, recuperando um XML ou um JSON como resposta.

Primeira consulta: buscando algo no Yahoo! Answers

O YQL! já possui diversas tabelas disponíveis para consultarmos que nos abstraem toda a complexidade de pesquisar no site de determinado serviço. Por exemplo, podemos consultar sobre como dormir bem no Yahoo! Answers, para isso, basta executarmos uma query que busque na tabela answers.search por “how to sleep well”, mas que parâmetros temos de colocar em nossa query para isso? Podemos descobrir essas informações executando o seguinte comando:

desc answers.search

Grande parte das tabelas existentes no YQL! provêem uma URL de documentação (visível dentro da Tag documentationURL), de qualquer forma, caso a documentação não exista para alguma tabela, é possível também através do desc ver a lista de parâmetros que a query recebe e a partir daí inferir o uso.

Olhando a documentação da tabela vemos que o parâmetro “query” indica pelo o quê procuramos e teremos a seguinte consulta:

select * from answers.search where query=”how to sleep well”

Integrando com uma aplicação (qualquer linguagem)

Mas como faço para usar esses resultados na minha aplicação? Simples, o YQL! fornece uma API Rest a qual podemos invocar passando como parâmetro a query que desejamos realizar. Basta invocar http://query.yahooapis.com/v1/public/yql?q=SUA_QUERY_VEM_AQUI que o resultado é retornado. No próprio console, no painel inferior existe um campo com a URL já pronta para ser copiada e utilizada na sua aplicação.

Por ser uma URL simples, é possível invocá-la de qualquer aplicação cuja linguagem suporte requisições HTTPs. Dependendo da linguagem utilizada, é possível utilizar uma ferramenta que faça a requisição e auxilie no parsing do XML/JSON da resposta, como o Restfulie (que existe para várias plataformas) e o HTTParty no Ruby.

Tabelas públicas

No YQL! também é possível criar tabelas novas e disponibilizar essas tabelas para que outras pessoas possam utilizá-las, essas tabelas são conhecidas como “Community Tables” e pode ser criada por qualquer pessoa (a parte 2 cobrirá a criação de tabelas). Nessas tabelas disponíveis, é possível por exemplo, consultar informações no IMDB, buscar o status de uma encomenda no através do site dos correios (tabela feita pelo Guilherme Chapiewski), buscar dados de músicas e bandas no Last.fm assim por diante.

O uso dessas tabelas se dá da mesma maneira que o uso das tabelas já providas pelo Yahoo!, ou seja, vá até o console, teste a sua query até ela recuperar as informações da forma que você precisa e utilize a URL em sua aplicação (nas próximas partes desse post colocarei um exemplo de uso em uma aplicação Ruby, mas que pode ser aplicado facilmente em outras linguagens).

Conclusão

Essa primeira parte é só uma introdução sobre o YQL!. Algumas buscas vão requerer tarefas mais avançadas, como criar tabelas, fazer joins nas tabelas e assim por diante, que serão vistos nos próximos posts.

About these ads

5 Responses to YQL! Parte 1: O básico sobre busca de dados públicos

  1. Bruno disse:

    Boa Adriano, parabéns pelo post, já dá pra dar um quickstart no yql legal

  2. Felipe disse:

    Show de bola cara. Já conhecia o serviço(graças a você). Rs.

  3. Pingback: YQL! Parte 2: Criando novas tabelas « Ahalmeida's Weblog

  4. Pingback: YQL! Parte 3: Usando tabelas do YQL! em uma aplicação Ruby e Java com Restfulie « Ahalmeida's Weblog

  5. Anônimo disse:

    Fastidious replies in return of this query with firm arguments and
    describing all about that.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

%d blogueiros gostam disto: