Сохранить все файлы изображений с веб-сайта - PullRequest
6 голосов
/ 28 октября 2011

Я создаю небольшое приложение для себя, где запускаю скрипт Ruby и сохраняю все изображения из моего блога.

Я не могу понять, как сохранить файлы изображений после того, как я их определил. Любая помощь будет высоко ценится.

require 'rubygems'
require 'nokogiri'
require 'open-uri'

url = '[my blog url]'
doc = Nokogiri::HTML(open(url))

doc.css("img").each do |item|
  #something
end

Ответы [ 4 ]

25 голосов
/ 28 октября 2011
URL = '[my blog url]'

require 'nokogiri' # gem install nokogiri
require 'open-uri' # already part of your ruby install

Nokogiri::HTML(open(URL)).xpath("//img/@src").each do |src|
  uri = URI.join( URL, src ).to_s # make absolute uri
  File.open(File.basename(uri),'wb'){ |f| f.write(open(uri).read) }
end

Использование кода для преобразования в абсолютные пути отсюда: Как получить абсолютный URL при извлечении ссылок с помощью Nokogiri?

1 голос
/ 09 апреля 2014

Совет: есть простой способ получить изображения из головы / тела страницы, используя драгоценный камень Scrapifier.Круто то, что вы также можете определить, какой тип изображения вы хотите вернуть (jpg, png, gif).

Попробуйте: https://github.com/tiagopog/scrapifier

Надеюсь, вам понравится.

1 голос
/ 28 октября 2011

при условии, что атрибут src является абсолютным URL, может быть что-то вроде:

if item['src'] =~ /([^\/]+)$/
    File.open($1, 'wb') {|f| f.write(open(item['src']).read)}
end
0 голосов
/ 28 октября 2011
system %x{ wget #{item['src']} }

Редактировать: предполагается, что вы работаете в Unix-системе с wget :) Редактировать 2: Обновлен код для получения img src из nokogiri.

...