Descargar una lista de archivos
Clase 27 de 34 • Curso de Ruby 2017
Contenido del curso
Eduardo Bravo
Kiel Rodríguez
David Peñafiel Zeballos
Ivan Robles
Felipe Eduardo Galindo Hernández
Robinson Ganchala
Qué poder tan maravilloso… quede encantado la verdad. 😃
Les dejo las modificaciones al codigo!
require 'nokogiri' require 'open-uri' url = 'http://www.reactiongifs.com/page/' document = nil contador = 0 begin puts "Pagina: #{contador}" begin document = Nokogiri::HTML(open(url + contador.to_s + '/')) rescue OpenURI::HTTPError => e document = nil end div_main = document.css('div#main') div_main.css('div.post').each do |post| title = post.css('h2').text gif_url = post.css('div.entry img').attr('src') File.open("gifs/#{title}.gif", 'w') do |new_file| puts "Descargando: #{title}" open(gif_url, 'r') do |gif| new_file.write(gif.read) end end end contador+=1 end until document.nil?
intenté hacer scrapping pero los gif me salen como archivos corruptos, tampoco tienen extensión, así que al ponerle manualmente tampoco se podían abrir
Lo único que tienes que hacer es indicarle la extensión .gif al escribir el archivo:
File.open("gifs/#{title}.gif", 'w') do |new_file| puts "Descargando gif: #{title}" open(gif_url, 'r') do |gif| new_file.write(gif.read) end end
No entiendo muy bien esta parte del código:
open(gif_url, 'r') do |gif| new_file.write(gif.read) end
Se supone que por cada url que lee con “open(gif_url, ‘r’)” crea un archivo gif “do |gif|” en blanco y cuando usas “new_file.write” guardas la imagen en ese archivo, se supone que “gif.read” abre la url y descarga la imagen o como funciona esta parte del código?
Deberías debugear para ver que va haciendo, usa byebug por ejemplo.