我正在使用Nokogiri从HTML文档中的HTML表中提取数据。
document = Nokogiri::HTML(File.open("webpage.html"))
tables = document.search('table')
table = tables.first # first table in the document
document.at('table').search('tr').each do |row|
cells = row.search('th, td').map { |cell| cell.text.strip }.values_at(0, 2) #select first and second column value
end
当我映射提取的文本时,它会创建许多没有分隔符的数组(打印输出):
["1972", "$5,500.00"]["1973", "$5,600.00"]["1974", "$6,600.00"]["1975", "$7,400.00"]["1976", "$8,300.00"]["1977", "$9,300.00"]["1978", "$10,400.00"]
我的目标是要有一个像这样的哈希:
{"1972" => "$5,500.00", "1973" => "$5,600.00", "1974" => "$6,600.00", "1975" => "$7,400.00", "1976" => "$8,300.00", "1977" => "$9,300.00", "1978" => "$10,400.00"}
如果我使用地图迭代器创建嵌套数组,则应该可以处理,但是我要做的是创建没有分隔符(逗号)的多个数组。
非常感谢您的帮助,因为我什至不知道该如何称呼我收到的输出:
print cells
或者,如何将这些没有分隔符的多个数组转换为我想要的哈希格式?
答案 0 :(得分:1)
您实际上并不是在映射结果,而是在迭代和丢弃它们。也许你是说:
data = document.at('table').search('tr').map do |row|
row.search('th, td').map { |cell| cell.text.strip }.values_at(0, 2).to_h
end
什么将返回数组中每行一个哈希。