我正在尝试抓取一些网站并将图像存储为 CouchDB 附件。为了加快这个过程,我根本不想在本地存储图像。
我已经在使用的相关 gem 是 Mechanize、CouchRest Model 和 rest-client。我也在使用 Ruby URI 模块。
我尝试将确切的文件 URL 输入 CouchRest 的 create_attachment 方法。但是,我相信它需要一个 Ruby 类 File 的文件。(它没有明确记录。)它会为路径抛出一个未定义的方法错误。(文件方法)
在下面的代码中,地址是页面的 URI 数组,@string_address 是相同的字符串版本。
def scrape_site
agent = Mechanize.new
page = agent.get @string_address
page.images.each do |image|
image_src = address
image_src[5] = URI.split(image.src)[5]
image_src = URI::HTTP.new(*image_src).to_s
self.create_attachment file: image_src, name: image.text
end
end