Class: BillboardHot100::Scraper

Inherits:
Object
  • Object
show all
Defined in:
lib/billboard_hot_100/scraper.rb

Class Method Summary collapse

Class Method Details

.scrape_songsObject



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