0

我正在尝试抓取一些网站并将图像存储为 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
4

1 回答 1

0

好吧,如果它需要一个 File 对象,您只需要制作一个假装它是一个...尝试创建一个子类 StringIO 的类。构造成图片URL的二进制数据,加个路径就行了?返回一些(希望)满足 CouchRest 的方法。

于 2012-12-19T23:35:05.167 回答