迭代表数据并使用行和td值填充数组

时间:2014-01-09 18:10:45

标签: ruby nokogiri

我正在尝试遍历表行,并且每行都是一个数组,并且在其中,将单个单元格的所有文本作为第一个数组中的数组。所以这是我想要的输出:

[
    [row1][
              [td element1 from row 1],
              [td element2 from row 1]  
    ],
    [row2][
              [td element1 from row 2],
              [td element2 from row 2]

    ]
]

这是我的代码:

           page = Nokogiri::HTML(open(url))
            table = page.at('table#ctl00_MainContent_gvSearchResults')
            rows = Array.new
            rowCells = Array.new
            cells = Array.new

            table.search('tr').each do |tr|
                tr.search('td').each do |cell|
                    cells.push(cell.text.gsub(/\r\n?/, "").strip)

                end
                rowCells.push(cells)
            end

            p rowCells

这将返回以下结果,其中值是来自所有行的td元素。它几乎是正确的,因为它为每一行返回一个数组,但在每个行的数组中,它为所有行放置所有单元格,因此每个行数组具有相同的值。

[
    [0] [
            [0] "value1",
            [1] "value2" 
        ]
]

1 个答案:

答案 0 :(得分:0)

开始新行时重新初始化cells

page = Nokogiri::HTML(open(url))
table = page.at('table#ctl00_MainContent_gvSearchResults')
rowCells = Array.new

table.search('tr').each do |tr|
  cells = Array.new
  tr.search('td').each do |cell|
    cells.push(cell.text.gsub(/\r\n?/, "").strip)
  end
  rowCells.push(cells)
end

p rowCells