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.