我正在使用 Mechanize 和 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
}
要从特定位置获取图像:
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))}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)