Google-Search uma gem de pesquisa google para Ruby

Publicado: 30-11-2010 em Gems, Google, Ruby
Tags:, , ,

Encontrei uma gem um tanto interessante a respeito de buscas Google a gem google-search. De uma forma simples e rápida pude pegar as informações das pesquisas e manipulá-las.
Ela utiliza a API disponibilizada pelo próprio google para realizar as pesquisas (veja aqui).
A instalação segue o padrão:

gem install google-search

Para todas as pesquisas podemos passar os seguintes parâmetros:

  • query – Texto para busca
  • language – Língua para a realização da pesquisa
  • safety_level – Define se o resultado será restrito. Os valores que podem ser atribuídos estão presentes na constante Google::Search::Web::SAFETY_LEVELS, que são os seguintes símbolos: active, moderate, off
  • filter – Define se retorna ou não resultados duplicados. (1 – Retorna duplicados. 0 – Não retorna duplicados.)

As formas possíveis de buscas são:

Google::Search::Web

Esta classe retorna os resultados da pesquisa Web do google, trazendo consigo os links dos sites.
Os registros retornados são da classe Google::Search::Item::Web o qual possui as seguintes informações:

  • uri – Endereço da página encontrada.
  • cache_uri – Endereço da página cacheada pelo Google.
  • title – Título da página.
  • content – Uma breve descrição do conteúdo.
  • thumbnail_uri – Url do thumbnail (caso exista).
  • thumbnail_height – Altura do thumbnail (caso exista).
  • thumbnail_width – Comprimento do thumbnail (caso exista).
  • visible_uri – Url visível.
  • index – Número do index.

Com estas opções são vastas as possibilidades, veja abaixo no caso de uma listagem básica.

require "rubygems"
require "google-search"

Google::Search::Web.new({:query=>"rails"}).each do |result|
  puts "#{result.title} - #{result.uri}"
end

Este código realiza uma pesquisa pelo termo rails e imprime os títulos e a url das páginas.

Google::Search::Blog

Esta classe tem como finalidade retornar os resultados referente a posts de blogs com o termo pesquisado.
Os registros retornados são da classe Google::Search::Item::Blog o qual possui as seguintes informações:

  • author – Nome do post
  • content – Uma breve descrição do conteúdo.
  • title – Título do resultado.
  • uri – Endereço do resultado.
  • blog_uri – Endereço do blog.
  • index – Número do index.
  • published – Data de publicação
  • thumbnail_uri – Url do thumbnail (caso exista).
  • thumbnail_height – Altura do thumbnail (caso exista).
  • thumbnail_width – Comprimento do thumbnail (caso exista).

Para a pesquisa em blogs podemos ter um exemplo básico, o qual lista o titulo e o autor que possuam a palavra ruby.

require "rubygems"
require "google-search"

Google::Search::Blog.new({:query=>"ruby"}).each do |result|
  puts "#{result.title} - #{result.author}"
end

Google::Search::Book

Esta classe tem como finalidade retornar os resultados referente a livros com o termo pesquisado.
Os registros retornados são da classe Google::Search::Item::Book o qual possui as seguintes informações:

  • author – Nome do autor
  • pages – Número de páginas
  • title – Título do livro.
  • id – Identificação do livro para o google,
  • uri – Endereço do livro no google.
  • index – Número do index.
  • published_year – Ano de publicação do livro
  • thumbnail_uri – Url do thumbnail (caso exista).
  • thumbnail_height – Altura do thumbnail (caso exista).
  • thumbnail_width – Comprimento do thumbnail (caso exista).
  • visible_uri – Url visível.

Para a pesquisa de livros podemos ter um exemplo básico, o qual lista o titulo e o número de páginas dos livros que possuam a palavra ruby.

require "rubygems"
require "google-search"

Google::Search::Book.new({:query=>"ruby"}).each do |result|
  puts "#{result.title} - #{result.pages.to_i}"
end

Google::Search::Image

Desenvolvida para pesquisa de Imagens com o termo informado.
Os registros retornados são da classe Google::Search::Item::Image o qual possui as seguintes informações:

  • title – Título da Imagem.
  • content – Uma breve descrição do conteúdo.
  • id – Identificação da imagem para o google
  • uri – Endereço da imagem no google.
  • context_uri – Endereço da página que contem a imagem.
  • height – Altura da imagem.
  • width – Comprimento da imagem.
  • index – Número do index.
  • thumbnail_uri – Url do thumbnail.
  • thumbnail_height – Altura do thumbnail.
  • thumbnail_width – Comprimento do thumbnail.
  • visible_uri – Url visível.

Um exemplo de utilização seria um script para baixar as 10 primeiras imagens referentes ao termo pesquisado.

require "rubygems"
require "google-search"
require "open-uri"

i = 0
Google::Search::Image.new({:query=>"ruby"}).each do |result|
  name = result.uri.split("/").last
  file = File.open(name.to_s,"w+")
  file.write open(result.uri).read
  file.close
  i += 1
  break if i == 10
end

Google::Search::Local

Esta classe retorna resultados da pesquisa de um termo, com posições geograficas e links para o google maps.
Os registros retornados são da classe Google::Search::Item::Local o qual possui as seguintes informações:

  • title – Título do resultado.
  • uri – Endereço do resultado.
  • thumbnail_uri – Url do thumbnail.
  • thumbnail_height – Altura do thumbnail.
  • thumbnail_width – Comprimento do thumbnail.
  • index – Número do index.
  • street_address – Endereço onde é localizado o resultado.
  • city – Cidade onde é localizado o resultado.
  • region – Estado onde é localizado o resultado.
  • country – País onde é localizado o resultado.
  • lat – Longitude do endereço.
  • long – Latitude do endereço.
  • phone_numbers – Números de telefone do resultado.
  • address_lines – Array com endereço completo.
  • directions_uri – Link para o google maps.
  • directions_from_here_uri – Como chegar partindo deste ponto.
  • directions_to_here_uri – Como chegar até este ponto.
  • viewport_mode – Modo de visualização.

Exemplo básico de pesquisa mostrando o titulo do resultado e a localização dele.

require "rubygems"
require "google-search"
require "active_support/core_ext"

Google::Search::Local.new({:query=>"ruby",:published=>"2010-01-01"}).each do |result|
  puts "#{result.title} - #{result.address_lines.join(" - ")}"
end

Google::Search::Patent

Particularmente não conhecia a busca de patentes do google e só através desta gem que fui conhecer. Esta classe tem como objetivo retornar os resultados da busca de patentes.
Os registros retornados são da classe Google::Search::Item::Patent o qual possui as seguintes informações:

  • id – Identificação da patente para o google
  • title – Título do patente.
  • content – Uma breve descrição do conteúdo.
  • uri – Endereço do patente no google.
  • assignee – Dono da patente
  • thumbnail_uri – Url do thumbnail.
  • thumbnail_height – Altura do thumbnail.
  • thumbnail_width – Comprimento do thumbnail.
  • application_date – Data de aplicação da patente.
  • status – Situação da patente.
  • index – Número do index.

Exemplo básico de pesquisa mostrando o titulo e o dono.

require "rubygems"
require "google-search"
require "active_support/core_ext"

Google::Search::Patent.new({:query=>"ruby",:published=>"2010-01-01"}).each do |result|
  puts "#{result.title} - #{result.assignee}"
end

Google::Search::Video

Esta classe tem como finalidade retornar os resultados referente a videos com o termo pesquisado.
Os registros retornados são da classe Google::Search::Item::Video o qual possui as seguintes informações:

  • title – Título do vídeo.
  • content – Uma breve descrição do conteúdo.
  • uri – Endereço do vídeo no google.
  • index – Número do index.
  • published – Data de publicação
  • thumbnail_uri – Url do thumbnail.
  • thumbnail_height – Altura do thumbnail.
  • thumbnail_width – Comprimento do thumbnail.
  • rating – Avaliação do vídeo.
  • publisher – Local no qual está publicado.
  • type – ID do Local no qual está publicado.
  • duration – Duração do vídeo em segundos.

Para a pesquisa de videos podemos ter um exemplo básico, o qual lista o título e data de publicação dos vídeos que possuam a palavra ruby.

require "rubygems"
require "google-search"
require "active_support/core_ext"

Google::Search::Video.new({:query=>"ruby",:published=>"2010-01-01"}).each do |result|
  puts "#{result.published.strftime("%Y-%m-%d %H:%M:%S")} - #{result.title}"
end

Assim terminando a explicação sobre as funcionalidades desta gem e com ela as possibilidades de aplicações são variadas, expecialmente se tratando de pesquisas com a gigante Google.

Deixe uma resposta

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

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s