ruby nokorigi导出csv列

时间:2018-09-27 17:59:05

标签: ruby-on-rails ruby

我想用它的类型在3列中导出csv,但是我得到的结果与我想要的不一样。仅是一列显示我的所有数据,请帮助我该怎么做

require 'nokogiri'
require 'csv'

page = Nokogiri::HTML(open("index.html"))

fullName = page.css('li._5i_q').css("a[data-gt]").children.map {|name| name.text }
shortURL = page.css('li._5i_q').css("._5j0e a[data-hovercard]")
myID = shortURL.map {|element|
  element["data-hovercard"][/id=([^&]*)/].gsub('id=', '')
}
messenger = shortURL.map {|element|
  element["data-hovercard"][/id=([^&]*)/].gsub('id=', '') + "@gmail.com"
}

attributes = %w{ID FullName Messenger}

CSV.open('chatId.csv', 'w') do |csv|
  csv << attributes

  myID.each do |x|
      csv << [x]
  end
  fullName.each do |y|
      csv << [y]
  end
  messenger.each do |z|
    csv << [z]
  end
end

这是我的全部代码

1 个答案:

答案 0 :(得分:0)

将数据导出到csv时,必须逐行编写。因此,尝试创建[x, y, z]的数组并使用to_csv方法将其导出。例如:

data = myID.zip(fullName, shortUrl)

CSV.open('chatId.csv', 'w') do |csv|
  csv << attributes
  csv << "\n"
  data.each do |d|
    csv << d.to_csv
  end
end