使用Nokogiri进行屏幕抓取,每种方法返回零

时间:2012-11-22 07:14:19

标签: ruby nokogiri

我正在运行以下代码:

require 'rubygems'
require 'nokogiri'
require 'open-uri'

url = "http://sfbay.craigslist.org/search/sss?query=bike&catAbb=sss&srchType=A&minAsk=&maxAsk="

doc = Nokogiri::HTML(open(url))
doc.css(".row").each do |row|
  row.css("a").text
end

我唯一得到的是0。但是,当我运行doc.css(".row")时,我会从CL获取整个行列表。当我使用每种方法时为什么它返回零,我该如何修复它?

2 个答案:

答案 0 :(得分:2)

.each不返回任何内容,它是一个简单的迭代器。也许您正在寻找.map

这将返回一个锚元素文本数组:

doc.css(".row").map {|row| row.css("a").text }

答案 1 :(得分:1)

您不需要发出两个不同的css查询;你可以把它们结合起来:

doc.css(".row > a").map(&:text)