【问题标题】:Screen scraping with Nokogiri and Each method returning zero使用 Nokogiri 和每个方法返回零的屏幕抓取
【发布时间】:2012-11-22 07:14:18
【问题描述】:

我正在运行以下代码:

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 方法时返回零,我该如何解决?

【问题讨论】:

  • 你想做什么?您没有对提取的文本做任何事情
  • 这是一项正在进行的工作。这是我第一次玩 Nokogiri。

标签: ruby nokogiri


【解决方案1】:

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

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

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

【讨论】:

  • 很好,但 NodeSet#each 出于某种原因确实返回 0。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2014-07-19
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2011-12-09
    • 2011-07-19
    • 2011-02-20
    相关资源
    最近更新 更多