我目前正在尝试使用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中缺少或应该使用的内容吗?
答案 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
做什么,但这样可以获得每张图片的网址,以便您自己展示。