Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用Nokogiri和每个方法返回零的屏幕抓取_Ruby_Nokogiri - Fatal编程技术网

Ruby 使用Nokogiri和每个方法返回零的屏幕抓取

Ruby 使用Nokogiri和每个方法返回零的屏幕抓取,ruby,nokogiri,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.

我正在运行以下代码:

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方法时它返回零,以及如何修复它?

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

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

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

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

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

你想干什么?你没有对你提取的文本做任何事情,这是一项正在进行的工作。这是我第一次玩Nokogiri。很好,但是NodeSet#由于某些原因,每个都返回0。