将Nokogiri抓取的数据输出到网页

时间:2014-11-20 09:39:45

标签: ruby-on-rails ruby nokogiri

我目前正在尝试使用Nokogiri从网页上抓取数据。到目前为止,我已经能够使用控制器中的代码成功地删除标题和价格信息:

@items = doc.xpath("//div[contains(@class, 'name')]/a").collect {|node| node.text.strip}
@prices = doc.xpath("//div[contains(@class, 'price')]/span[contains(@class, 'price-new')]").collect {|node| node.text.strip}

以及视图中的此代码:

<% @items.zip(@prices).each do |title,price| %>
<%= title+"  "+price%>
<% end %>

但是这个图像代码不会起作用。 (请注意,我试图抓取<img>代码):

@images = doc.xpath("//div[contains(@class, 'image')]/a/img").collect

我尝试写入视图的任何内容.erb只会返回语法错误。知道我在.erb中缺少或应该使用的内容吗?

1 个答案:

答案 0 :(得分:1)

那里有错字吗?这样:

@images = doc.xpath("//div[contains(@class, 'image')]/a/img").collect

只返回Enumerator。如果那不是拼写错误,那么答案就是你需要将一个块传递给collect,可能:

@images = doc.xpath("//div[contains(@class, 'image')]/a/img").collect { |element| element.attribute("src") }

您不清楚自己下一步使用@images做什么,但这样可以获得每张图片的网址,以便您自己展示。