Веб-скрейпинг — извлечение отдельных элементов из столбца, содержащего несколько элементов (Nokogiri, Ruby).

Я новичок в веб-разработке и пытаюсь изучить веб-скрейпинг. Столбец, из которого я пытаюсь извлечь, содержит несколько элементов, и я хочу получить отдельные элементы по отдельности.

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

Результатом этого является:

=> [["\n \n \n \n BTC\n Биткойн\n "], ["\n \n \n \n XRP\n Ripple\n "], ... ]

Что мне нужно сделать, чтобы получить только имена?


person mxvx    schedule 05.01.2018    source источник
comment
Что вы имеете в виду под просто именами?   -  person user3309314    schedule 06.01.2018
comment
[Биткойн, пульсация, ...]   -  person mxvx    schedule 06.01.2018
comment
Это сработало. Спасибо.   -  person mxvx    schedule 06.01.2018


Ответы (1)


Вы можете применить следующее к своей переменной data:

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

Это дает результат:

["Bitcoin", "Ripple", ...]
person user3309314    schedule 06.01.2018