Web Crawler em Ruby com Open-URI e Nokogiri

Publicado por Daniel Vinciguerra (última atualização em 06/07/2016)

[ Hits: 5.102 ]

Homepage: http://bivee.com.br

Download web-crawler.rb




Você já precisou acessar algum site na web para obter alguma informação usando Ruby?

Esse tipo de cenário é bem comum e não é difícil que tenhamos esse tipo de necessidade em um projeto, seja para servir a informação em questão ou para utiliza-la no desenvolvimento do projeto.

Para esse tipo de necessidade este script vai apresentar dois módulos Ruby, o primeiro é o "open-uri" que serve para acessar o conteúdo publicado na web (html, js, css, etc...), e o segundo é o "nokogiri" que nos permite acessar os elementos do html/xml, usando com seletores baseados em XPath ou CSS.


PRÉ-REQUISITOS

- ruby
- Módulo open-uri e nokoguiri instalado


REFERÊNCIAS

http://ruby-doc.org/stdlib-2.2.0/libdoc/open-uri/rdoc/OpenURI.html
https://rubygems.org/gems/nokogiri


EXECUTANDO

$ ruby web-crawler.rb

  



Esconder código-fonte

#!/usr/bin/env ruby
# 2016 (c) Daniel Vinciguerra

# importa os modulos
require 'open-uri'
require 'nokogiri'

# obtém o html da pagina
html = open 'https://www.vivaolinux.com.br'

puts "LISTA DOS ULTIMOS SCRIPTS"
puts '=' * 60

# efetua o parse do html
doc = Nokogiri::HTML(html)

id = 1 

# seleciona os elementos usando css selector
doc.css('div#scripts > .media').each do |d|

  # imprime as informações encontradas
  puts "\n#{id} - " + d.at_css('h3').content
  puts "Escrito por: " + d.at_css('em').content

  id += 1
end

Scripts recomendados

Postmon - Consumindo uma API com Ruby

Utilização de Classes em Ruby

Exemplos de comentários e operadores de impressão na tela

Scan Port Interno

Crivo de Eratóstenes Simples em Ruby


  

Comentários
[1] Comentário enviado por andregyn em 27/07/2016 - 22:19h

Que legal seu script!! muito bom, parabéns!!

[2] Comentário enviado por dvinciguerra em 28/07/2016 - 09:32h


[1] Comentário enviado por andregyn em 27/07/2016 - 22:19h

Que legal seu script!! muito bom, parabéns!!


Muito obrigado Andre!
Grande abraço,


Contribuir com comentário