如何使用Rails从网站下载图像?

时间:2018-05-11 18:45:41

标签: ruby-on-rails ruby selenium nokogiri open-uri

我正在使用Selenium-Webdriver,OpenUri和Nokogiri来搜索网站。我想从所述网站下载特定图像到我的Ubuntu计算机。我尝试了几种不同的方法,但每种方法都会给出不同的错误信息。

这是我的基本代码,它打开网站并获取图片网址(此后我在我的pry控制台中运行的所有内容):

require 'open-url'
require 'selenium-webdriver'
require 'nokogiri'
require 'uri'

url = "https://www.google.com/"
browser = Selenium::WebDriver.for :chrome
document = open(url).read
parsed_content = Nokogiri::HTML(content)
image = "https://www.google.com" + parsed_content.css('#hplogo').attr('src').value
binding.pry

1)以下是我尝试下载图片的第一件事:

download = open(image)
IO.copy_stream(download, '~/image.png')

为此,我收到以下错误:

  

Errno :: ENOENT:没有这样的文件或目录@ rb_sysopen - 〜/ image.png来自(pry):44:'initialize'

根据this question,我尝试在代码中添加一个目录:

FileUtils.mkdir_p(image) unless File.exist?(image)

但我得到了同样的错误。

2)接下来我尝试了这个:

open('image.png', 'wb') do |file|
  file << open(image).read
end

然后返回

#<File:image.png (closed)

但是文件不在我的电脑上,我无法弄清楚该消息的含义。

3)接下来我尝试了

IO.copy_stream(open(image), 'image.png')

简单地回复了这个:

  

5482

但同样,我不知道这意味着什么,文件不在任何地方。

4)最后我尝试了

read_image = open(image).read
File.open(image, 'image.png') do |file|
  file.puts read_image
end

输出

  

ArgumentError:无效的访问模式image.png   来自(pry):53:在'initialize

我做错了什么?我接近我的任何方法吗?

0 个答案:

没有答案