class BillboardHot100::Scraper

Public Class Methods

scrape_songs() click to toggle source
# 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