Webscraping - 从包含多个项目的列中提取单个项目(Nokogiri,Ruby)
Webscraping - Extracting individual items from a column that contains multiple items (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\nBTC\nBitcoin\n"],["\n\n\n\nXRP\nRipple\n "], ... ]
我需要做什么才能只获取名称?
您可以将以下内容应用于您的 data
变量:
data.flatten.map { |s| s.split("\n")[-2].gsub(' ', '') }
结果为:
["Bitcoin", "Ripple", ...]
我是网络开发的新手,正在尝试学习网络抓取。我试图从中提取的列包含多个项目,我想分别获取各个项目。
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\nBTC\nBitcoin\n"],["\n\n\n\nXRP\nRipple\n "], ... ]
我需要做什么才能只获取名称?
您可以将以下内容应用于您的 data
变量:
data.flatten.map { |s| s.split("\n")[-2].gsub(' ', '') }
结果为:
["Bitcoin", "Ripple", ...]