2

我正在运行以下代码:

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 中获取整个行列表。为什么当我使用 each 方法时它返回零,我该如何解决?

4

2 回答 2

2

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

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

doc.css(".row").map {|row| row.css("a").text }
于 2012-11-22T07:19:05.827 回答
1

您不需要发出两个不同的 CSS 查询;您可以将它们组合起来:

doc.css(".row > a").map(&:text)
于 2012-11-22T17:55:22.523 回答