2016-03-02 88 views
-1

我试图从网页中刮取表格并将其存储到csv文件中(我必须这样做,所以让我们跳过其他建议,例如excel,非数组解决方案,等等)Ruby数组到csv文件

网页上的每一行表格都是tr选项卡。如果我是导出到Excel,我会循环的做这个行:

.css("tr")[1..-1].each do |line| 

这将使在Excel中正确的格式,但是当我使用数组,TO- CSV方法,每一行从表成为csv中的一列。因此,如果表格中有10行和20列,它将在csv中显示为10列x1行(每行的所有20列值存储在一个单元中)。

我想这是因为数组将每行视为索引并将行存储到csv文件的每一列中。

有没有办法在csv中获得正确的格式?

当前代码:

category_array = [] 
page.css("#ctl00_PageData_GridView1").css("td")[0..30].each do |line| 
category_name = line.text 
category_array.push(category_name) 
end 
CSV.open('category.csv','w') do |csv| 
csv << category_array 
end 
+0

'do ... end'里面的代码是什么? – Aetherus

+0

'category_array = []' 'page.css( “#ctl00_PageData_GridView1”)的CSS( “TD”)[0..30]。每个做|。线|'' CATEGORY_NAME = line.text category_array.push (category_name) end' 'CSV.open('category.csv','w')do | csv | csv << category_array end' – dozel

+1

请更新您的问题以包含此代码段。 – Aetherus

回答

0

敢肯定你正在做的事情错了喜欢使用<<+数组:

irb(main):035:0> row = [1] 
irb(main):035:0> result = [] 

irb(main):035:0> result + row 
=> [1] # It adds the content of the second array to the first 

irb(main):037:0> result.concat(row) 
=> [1] # Same as above 

irb(main):036:0> result << row 
=> [[1]] # It moves the whole array into the other array 

因此,也许你想使用concat+代替<<