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から行のリスト全体が取得されます。各メソッドを使用するとゼロが返されるのはなぜですか。また、どのように修正すればよいですか。

4

2 に答える 2

2

.each何も返さず、単純なイテレータです。おそらくあなたは探してい.mapますか?

これにより、アンカー要素テキストの配列が返されます。

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

2つの異なるcssクエリを発行する必要はありません。それらを組み合わせることができます:

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