【问题标题】:Saving an image using Nokogiri使用 Nokogiri 保存图像
【发布时间】:2017-03-17 10:24:08
【问题描述】:

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

我的推理是否正确,该代码开始从上到下读取 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

【问题讨论】:

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

标签: css ruby image nokogiri


【解决方案1】:

是的,

  • html.at 只找到第一个匹配的元素
  • html.search查找所有匹配的元素

这能回答你的问题吗?


在相关说明中,

  • html.at(".image") 找到任何带有 class="image" 的元素,即使它是 <div> 标签
  • html.at("img.image") 找到第一个带有 class="image"<img> 元素
  • html.at("img") 找到第一个 <img> 元素

【讨论】:

    猜你喜欢
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 2020-04-16
    相关资源
    最近更新 更多