Estou voltando depois de muito tempo sem escrever. Dei aula à noite durante dois meses e isso me exigiu uma atenção especial. E nada melhor do que voltar com Ruby!
Como vocês já devem ter percebido adoro scripts. Gosto de automatizar algumas tarefas que costumo realizar várias vezes ao dia.
Às vezes vou até a página da Globo.com ver o que está acontecendo no mundo. Mas tem muita informação na tela pra quem só corre o olho e metade é Big Brother (pelo menos era, quando escrevi isso).
Para me ajudar, fiz um script que resume a página da Globo.com pegando apenas suas imagens. Como sempre faço primeiro vou colocar o script e depois explico:
require 'hpricot'require 'open-uri'
html = '<html><head><title>Agora no Globo.com</title>'
html += '<META http-equiv="Content-Type" content="text/html;charset=UTF-8"></head>'
html += '<body><h1>Agora</h1><h2>no Globo.com</h2>'
doc = Hpricot open('http://www.globo.com')
doc.search 'img' do |img|
img['src'] = "http://www.globo.com#{img['src']}" unless img['src'].include?('globo.com')
html += img.to_send
html += '</body></html>'
File.open('Agora.html', 'w') { |file| file << html }
# system 'explorer Agora.html'Primeiramente percebe-se que utilizei o Hpricot para fazer parse do HTML. Excelente, diga-se. A variável html serve para concatenar o HTML que o script vai gerar.
Na linha 8 faço uma leitura na página Globo.com, utilizo Hpricot e open-uri para isso. Na linha 10 busco todas as imagens da página. Na linha 11 faço uma verificação na url da imagem para ver se é absoluta (http://www.globo.com/imagem.jpg) ou relativa (/imagem.jpg), transformando todas em urls absolutas para serem visualizadas de fora do servidor da Globo.
Finalizo o HTML que geramos e na linha 17 salvo em um arquivo chamado "Agora.html". Quem está utilizando o Windows pode descomentar a linha 19, para abrir o Internet Explorer (Eca!) com esse arquivo.
Você pode, facilmente, alterar o script e buscar as imagens de outro portal, como o Terra, por exemplo. Modifique e comente Até mais.












5 Comentários
Qual a sua opinião?