2

我用 Nokogiri 写了一个非常简单的程序来抓取一个网站并创建一个 CSV 文件。它正在获取正确的数据并制作 CSV,但数据被推入一个单元格 (A1),我宁愿它作为一列出现,每个值用逗号分隔。

如何告诉 CSV 为每个用逗号分隔的值创建一列,而不是将所有信息放入单个单元格中?

require 'open-uri'
require 'nokogiri'
require 'csv'

doc = Nokogiri::HTML(open('somewebpage.com'))
CSV.open("webpagedata.csv", "wb") do |csv|
    data = doc.css('.information h3 a').map { |link| link['href']  }
    puts data
    csv << [data]
end
4

1 回答 1

4

结果 fromdoc.css('.information h3 a').map { |link| link['href'] }已经是一个数组,因此当您将其添加到 CSV 文件时,您不需要将其包装在[...].

换行

csv << [data]

csv << data

CSV 库主要处理行,因此如果要创建而不是,则需要为列的每个条目添加(单个条目)行:

CSV.open("webpagedata.csv", "wb") do |csv|
  data = doc.css('.information h3 a').map { |link| link['href']  }
  data.each do |entry|
    csv << [entry]
  end
end

Note that in this case you do need the [...] around the entry, as you need to add an array not a single item.

于 2012-12-21T15:14:05.567 回答