保存网站中的所有图像文件

时间:2011-10-28 08:10:22

标签: ruby screen-scraping web-crawler nokogiri

我正在为自己创建一个小应用程序,我在其中运行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 个答案:

答案 0 :(得分:25)

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

使用代码从此处转换为绝对路径:How can I get the absolute URL when extracting links using Nokogiri?

答案 1 :(得分:1)

假设src属性是绝对url,可能类似于:

if item['src'] =~ /([^\/]+)$/
    File.open($1, 'wb') {|f| f.write(open(item['src']).read)}
end

答案 2 :(得分:1)

提示:这是一种使用Scrapifier gem从页面头部/身体获取图像的简单方法。很酷的是,您还可以定义要返回的图像类型(jpg,png,gif)。

试一试:https://github.com/tiagopog/scrapifier

希望你喜欢。

答案 3 :(得分:-1)

system %x{ wget #{item['src']} }

编辑:这假设你在使用wget的unix系统上:) 编辑2:更新了从nokogiri获取img src的代码。