Css 使用Nokogiri保存图像

Css 使用Nokogiri保存图像,css,ruby,image,nokogiri,Css,Ruby,Image,Nokogiri,我使用下面的代码从网页中获取特定的图像。这个页面上有多个带有图像标签的图像,那么这段代码是如何解释的呢?我注意到它只保存带有图像标签的第一张图像。一般来说这是真的吗 我的推理正确吗?这段代码开始从上到下读取css,一旦找到带有图像标记的第一个图像,它就会保存它并停止进一步查看?因为我需要它来做到这一点 PAGE = "http://example.com/page.html" require 'nokogiri' require 'open-uri' html = Nokogiri.HTML(o

我使用下面的代码从网页中获取特定的图像。这个页面上有多个带有图像标签的图像,那么这段代码是如何解释的呢?我注意到它只保存带有图像标签的第一张图像。一般来说这是真的吗

我的推理正确吗?这段代码开始从上到下读取css,一旦找到带有图像标记的第一个图像,它就会保存它并停止进一步查看?因为我需要它来做到这一点

PAGE = "http://example.com/page.html"
require 'nokogiri'
require 'open-uri'
html = Nokogiri.HTML(open(PAGE))
src  = html.at('.image')['src']
File.open("foo.png", "wb") do |f|
    f.write(open(src).read)
end

  • html.at
    仅查找第一个匹配元素
  • html.search
    查找所有匹配元素
这回答了你的问题吗


另一方面

  • html.at(“.image”)
    查找任何带有
    class=“image”
    的元素,即使它是一个
    标记
  • html.at(“img.image”)
    使用
    class=“image”
  • html.at(“img”)
    查找第一个
    元素

这只是获取第一个
.image
元素并下载
src
属性。它并不关心所有的图像。如果是这样,你会使用
css
方法而不是
at
。您可能想使用
.css('img')
。您想查找具有类
image
或所有
img
s的元素吗?这个问题不再有意义,因为example.com处于脱机状态,因此示例代码将失败。请参阅“”。