2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# File 'lib/billboard_hot_100/scraper.rb', line 2
def self.scrape_songs
songs = []
index = Nokogiri::HTML(open("https://www.billboard.com/charts/hot-100"))
index.css("div.chart-list-item").each do |song|
songs << {
rank: song.css(".chart-list-item__rank").text.strip,
title: song.css(".chart-list-item__title-text").text.strip,
artist: song.css(".chart-list-item__artist").text.strip,
last_week: song.css(".chart-list-item__last-week").text.strip,
peak_position: song.css(".chart-list-item__weeks-at-one").text.strip,
weeks_on_chart: song.css(".chart-list-item__weeks-on-chart").text.strip,
lyrics: song.css('div.chart-list-item__lyrics a').map { |link| link['href'] }.join,
award: song.css(".chart-list-item__award-icon").text.strip
}
end
BillboardHot100::Song.create(songs)
end
|