ruby-on-rails - 如何下载 URL 中可用的所有图像?

标签 ruby-on-rails ruby ruby-on-rails-4 rubygems mechanize

我想下载此链接中提供的所有产品图片:

http://www.veromoda.in/vero-moda-women-s-white-coloured-casual-shirt-4.html

我知道如何通过传递每个图像的 URL 来下载单个图像:
require 'rubygems'
require 'mechanize'

agent = Mechanize.new
link = 'http://www.veromoda.in/media/catalog/product/cache/1/thumbnail/9df78eab33525d08d6e5fb8d27136e95/1/0/10074424-snowwhite-1.jpg'
agent.get(link).save "images/pic.jpg"

如何通过传递单个 URL 下载该产品的所有图像?

最佳答案

这是在页面中查找所有图像的核心:

require 'nokogiri'
require 'restclient'

doc = Nokogiri::HTML(RestClient.get('http://www.iana.org/domains/reserved'))
images = doc.search('img').map{ |img| img['src'] }
images[0..2] # => ["/_img/2013.1/iana-logo-header.svg", "/_img/2013.1/icann-logo.svg"]

遍历 src images 中的 URL , get每个,然后保存它。

您可以看到需要对 URL 进行一些修复以使其完全定义,因此这是下载文件任务的一部分。你需要弄清楚如何做到这一点。

您还需要弄清楚如何分辨您想要的图像是什么,而不是广告或导航元素、定位等。

如果目标站点有robots.txt文件,您还需要弄清楚如何成为一名优秀的网络公民并尊重robots.txt文件,并限制您的请求,以免他们的网络饱和并停止他们的服务器,如果您在图像洗劫运行,否则预计会被禁止。

关于ruby-on-rails - 如何下载 URL 中可用的所有图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34637767/

相关文章:

ruby-on-rails - 为什么我的 rake db :migrate throws error message?

ruby-on-rails - 将 Ruby 时间戳转换为 Epoch 中的秒数并返回

ruby - 需要基于 ruby​​ 中组内最小值的 hashmap 的值

ruby-on-rails - 如何验证大 XML

ruby-on-rails - Rails4 order by column alias in joins group

sorting - Ransack gem - 不区分大小写的排序(Rails 4)

ruby-on-rails - bundle 安装不使用 rbenv 本地 Ruby 版本

ruby-on-rails - 如何正确地重写模块混入的方法?

ruby-on-rails - 如何在关联模型只有一个实例时隐藏表单 #rails #beginner

ruby-on-rails - Rails事件模型从同一个表查询父子