如何使用 Rails 从网站下载图片?
How can I download an image from a website using Rails?
我正在使用 Selenium-Webdriver、OpenUri 和 Nokogiri 来抓取网站。我想从上述网站下载特定图片到我的 Ubuntu 电脑。我尝试了几种不同的方法,但每种方法都给出了不同的错误消息。
这是我的基本代码,它打开网站并获取图像 url(此后的所有内容我 运行 在我的撬控制台中):
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: No such file or directory @ rb_sysopen - ~/image.png from (pry):44:in 'initialize'
根据,我尝试在代码中添加一个目录:
FileUtils.mkdir_p(image) unless File.exist?(image)
但是我得到了同样的错误。
2) 接下来我试了这个:
open('image.png', 'wb') do |file|
file << open(image).read
end
和这个returns
#<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: invalid access mode image.png
from (pry):53:in 'initialize
我做错了什么?我是否采用了我的任何方法?
文件打开第二个参数是文件打开模式。
read_image = open(image).read
File.open('image.png', 'w+') do |file|
file.write read_image
end
您的第三个变体效果很好。
5482 - 文件长度。文件 'image.png' 与您的 .rb 文件位于同一目录中。
我正在使用 Selenium-Webdriver、OpenUri 和 Nokogiri 来抓取网站。我想从上述网站下载特定图片到我的 Ubuntu 电脑。我尝试了几种不同的方法,但每种方法都给出了不同的错误消息。
这是我的基本代码,它打开网站并获取图像 url(此后的所有内容我 运行 在我的撬控制台中):
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: No such file or directory @ rb_sysopen - ~/image.png from (pry):44:in 'initialize'
根据
FileUtils.mkdir_p(image) unless File.exist?(image)
但是我得到了同样的错误。
2) 接下来我试了这个:
open('image.png', 'wb') do |file|
file << open(image).read
end
和这个returns
#<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: invalid access mode image.png from (pry):53:in 'initialize
我做错了什么?我是否采用了我的任何方法?
文件打开第二个参数是文件打开模式。
read_image = open(image).read
File.open('image.png', 'w+') do |file|
file.write read_image
end
您的第三个变体效果很好。 5482 - 文件长度。文件 'image.png' 与您的 .rb 文件位于同一目录中。