Web Crawler em Ruby com Open-URI e Nokogiri
Publicado por Daniel Vinciguerra (última atualização em 06/07/2016)
[ Hits: 5.009 ]
Homepage: http://bivee.com.br
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
#!/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
Exemplo de utilização de métodos em Ruby
Shoes - GUIfique scripst em ruby
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
E aí? O Warsaw já está funcionando no Debian 13? [RESOLVIDO] (15)
Secure boot, artigo interessante, nada técnico. (4)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)









