我想解析一个表格,但不知道如何保存其中的数据。我希望能将每行数据保存成以下形式:
['Raw name 1', 2,094, 0,017, 0,098, 0,113, 0,452]
示例表格如下:
html = <<EOT
<table class="open">
<tr>
<th>Table name</th>
<th>Column name 1</th>
<th>Column name 2</th>
<th>Column name 3</th>
<th>Column name 4</th>
<th>Column name 5</th>
</tr>
<tr>
<th>Raw name 1</th>
<td>2,094</td>
<td>0,017</td>
<td>0,098</td>
<td>0,113</td>
<td>0,452</td>
</tr>
.
.
.
<tr>
<th>Raw name 5</th>
<td>2,094</td>
<td>0,017</td>
<td>0,098</td>
<td>0,113</td>
<td>0,452</td>
</tr>
</table>
EOT
我的网络爬虫代码是:
doc = Nokogiri::HTML(open(html), nil, 'UTF-8')
tables = doc.css('div.open')
@tablesArray = []
tables.each do |table|
title = table.css('tr[1] > th').text
cell_data = table.css('tr > td').text
raw_name = table.css('tr > th').text
@tablesArray << Table.new(cell_data, raw_name)
end
render template: 'scrape_krasecology'
end
end
当我尝试在HTML页面中显示数据时,看起来所有的列名都存储在一个数组元素中,数据也是同样的方式。
Table
是什么?为什么要有render template
和两个终止的end
?我们必须删除那些东西来进行测试。展示一份返回数据的最小样本,减去使用自定义类的部分。 - the Tin Man