如何使用nokogiri以指定格式格式化表格



我尝试使用以下代码,但得到了如下详细信息:请任何人提供解决方案。

class HtmlTablePage
include PageObject
page_url 'https://www.w3schools.com/html/html_tables.asp'
table(:table, id: 'customers')
def get_table_data
page = Nokogiri::HTML.parse(table_element.html)
table = page.css('table#customers tbody tr th')
data = {}
for i in table do
data[i.text] = page.css("table#customers tbody tr td").map(&:text)
end
p data
end
end
{"Company"=>["Alfreds Futterkiste", "Maria Anders", "Germany", "Centro comercial Moctezuma", "Francisco Chang", "Mexico", "Ernst Handel", "Roland Mendel", "Austria", "Island Trading", "Helen Bennett", "UK", "Laughing Bacchus Winecellars", "Yoshi Tannamuri", "Canada", "Magazzini Alimentari Riuniti", "Giovanni Rovelli", "Italy"], "Contact"=>["Alfreds Futterkiste", "Maria Anders", "Germany", "Centro comercial Moctezuma", "Francisco Chang", "Mexico", "Ernst Handel", "Roland Mendel", "Austria", "Island Trading", "Helen Bennett", "UK", "Laughing Bacchus Winecellars", "Yoshi Tannamuri", "Canada", "Magazzini Alimentari Riuniti", "Giovanni Rovelli", "Italy"], "Country"=>["Alfreds Futterkiste", "Maria Anders", "Germany", "Centro comercial Moctezuma", "Francisco Chang", "Mexico", "Ernst Handel", "Roland Mendel", "Austria", "Island Trading", "Helen Bennett", "UK", "Laughing Bacchus Winecellars", "Yoshi Tannamuri", "Canada", "Magazzini Alimentari Riuniti", "Giovanni Rovelli", "Italy"]}

但我需要这样:

{'Company': ['Alfreds Futterkiste', 'Centro comercial Moctezuma', 'Ernst Handel', 'Island Trading', 'Laughing Bacchus Winecellars', 'Magazzini Alimentari Riuniti'], 'Country': ['Germany', 'Mexico', 'Austria', 'UK', 'Canada', 'Italy'], 'Contact': ['Maria Anders', 'Francisco Chang', 'Roland Mendel', 'Helen Bennett', 'Yoshi Tannamuri', 'Giovanni Rovelli']}

您可以将每行的文本收集为Array,然后使用Array#transpose将其切换到数据列:

def get_table_data
page = Nokogiri::HTML.parse(table_element.html)
trs = page.css('table#customers tr')
row_texts = trs.map { |tr| tr.css('th', 'td').map(&:text) }
data = {}
row_texts.transpose.each { |col_text| data[col_text.shift] = col_text }
p data
end

最新更新