Webscraping - 从包含多个项目的列中提取单个项目(Nokogiri,Ruby)

时间:2018-01-05 23:53:19

标签: ruby-on-rails ruby web-scraping nokogiri web-development-server

我是网络开发新手并尝试学习网页编写。我试图从中提取的列包含多个项目,我想分别获取各个项目。

site = "http://www.cyrptomarketcap.com"
doc = Nokogiri::HTML.parse(open(site))
coin_table = doc.css("table").sort { |x,y| y.css("tr").count <=> x.css("tr").count }.first
rows = coin_table.cc("tr")
rows = rows.select { |row| row.css("th").empty? }
data = rows.map do |row|
  [row.at_css("td:nth-child(2)").try(:text)]
end

结果是:

=&GT; [[&#34; \ n \ n \ n \ n BTC \ n比特币\ n&#34;],[&#34; \ n \ n \ n \ n XRP \ n Ripple \ n&#34;] ,...]

我需要做些什么才能获得名字?

1 个答案:

答案 0 :(得分:1)

您可以将以下内容应用于data变量:

data.flatten.map { |s| s.split("\n")[-2].gsub(' ', '') }

结果如下:

["Bitcoin", "Ripple", ...]