如何获取列表中具有相同类的所有项

时间:2017-01-22 05:44:06

标签: ruby-on-rails ruby web-scraping nokogiri

我如何获得课程中的所有项目"成分"并用它来创造一种新的成分?我正在使用Nokogiri来上课。我这样做但只能创建一个成分/得到列表中的第一个项目:

require 'nokogiri'
require 'open-uri'

url = "http://damndelicious.net/2017/01/16/turkey-and-spinach-veggie-lasagna/"
doc = Nokogiri::HTML(open(url))


ingredients = Ingredient.create do |ingredient|
  ingredient.name = doc.at_css(".ingredient").text
end

这是我尝试从中获取项目的列表示例:

<li class="ingredient">1 tablespoon olive oil</li>
<li class="ingredient">2 cloves garlic, minced</li>
<li class="ingredient">1 onion, diced</li>
<li class="ingredient">2 zucchinis, diced</li>

1 个答案:

答案 0 :(得分:3)

.at_css方法返回唯一的第一个匹配。

要获取与选择器匹配的所有元素,请使用.css

ingredients = doc.css(".ingredient").map do |node|
  Ingredient.create!(name: node.text)
end