保存图像与机械化和引入nokogiri?(Save image with Mechanize and

2019-07-19 20:33发布

我使用机械化和引入nokogiri收集一些数据。 我需要保存真实随机在每个请求生成的图片。

在我的努力,我不得不下载所有的照片,但唯一一个我真正想要的是位于内的像div#specific

此外,是否有可能产生从它的Base64的数据,但不保存,或重装它的来源?

require 'rubygems'
require 'mechanize'
require 'nokogiri'

a = Mechanize.new { |agent|
    agent.keep_alive = true
    agent.max_history = 0
}

urls = Array.new()
urls.push('http://www.domain.com');

urls.each {|url|

    page = a.get(url)
    doc = Nokogiri::HTML(page.body)

    if doc.at_css('#specific')

        page.images.each do |img|
          img.fetch.save('picture.png')
        end

    end
}

Answer 1:

要提取的具体位置的图片:

agent = Mechanize.new
page = agent.get('http://www.domain.com')
images = page.search("#specific img")

要保存图像:

agent.get(images.first.attributes["src"]).save "path/to/folder/image_name.jpg"

为了得到不保存编码的图像:

encoded_image = Base64.encode64 agent.get(images.first.attributes["src"]).body_io.string

我跑这只是为了确保经编码的图像可以被解码回:

File.open("images/image_name.jpg", "wb") {|f| f.write(Base64.decode64(encoded_image))}


文章来源: Save image with Mechanize and Nokogiri?