class NbaTodayGem::Scraper

Attributes

doc[RW]

Public Class Methods

new() click to toggle source
# File lib/nba_today_gem/scraper.rb, line 6
def initialize
  # CommandLineReporter progress
  self.formatter = 'progress'

  @doc = Nokogiri::HTML(open("https://www.msn.com/en-us/sports/nba/scores")).css("div.sectionsgroup div.section")[0..3]
  @games = []
end
scrape_nba_game_info(game) click to toggle source
# File lib/nba_today_gem/scraper.rb, line 52
def self.scrape_nba_game_info(game)
  get_game_info = Nokogiri::HTML(open(game.url))

  game.date = get_game_info.css("#gamematchupsummary div.basicinfo div.datetime.hide1").text

  if game.date == ""
    game.date = "LIVE NOW"
  end

  game.recap = get_game_info.css("#matchuprecapmodule header h1").text

  point_leaders = [
    NbaTodayGem::NbaPlayer.new(get_game_info.css("div.leaders div.points a:nth-child(3) div div.board span div.playername span").text),
    NbaTodayGem::NbaPlayer.new(get_game_info.css("div.leaders div.points a:nth-child(5) div div.board span div.playername span").text)
  ]

  point_leaders[0].points = get_game_info.css("div.leaders div.points a:nth-child(3) div div.board span div.stats span").text
  point_leaders[1].points = get_game_info.css("div.leaders div.points a:nth-child(5) div div.board span div.stats span").text

  rebound_leaders = [
    NbaTodayGem::NbaPlayer.new(get_game_info.css("div.leaders div.rebounds a:nth-child(3) div div.board span div.playername span").text),
    NbaTodayGem::NbaPlayer.new(get_game_info.css("div.leaders div.rebounds a:nth-child(5) div div.board span div.playername span").text)
  ]

  rebound_leaders[0].rebounds = get_game_info.css("div.leaders div.rebounds a:nth-child(3) div div.board span div.stats span").text
  rebound_leaders[1].rebounds = get_game_info.css("div.leaders div.rebounds a:nth-child(5) div div.board span div.stats span").text

  assist_leaders = [
    NbaTodayGem::NbaPlayer.new(get_game_info.css("div.leaders div.assists a:nth-child(3) div div.board span div.playername span").text),
    NbaTodayGem::NbaPlayer.new(get_game_info.css("div.leaders div.assists a:nth-child(5) div div.board span div.playername span").text)
  ]

  assist_leaders[0].assists = get_game_info.css("div.leaders div.assists a:nth-child(3) div div.board span div.stats span").text
  assist_leaders[1].assists = get_game_info.css("div.leaders div.assists a:nth-child(5) div div.board span div.stats span").text

  game.top_peformers[:points] = point_leaders
  game.top_peformers[:rebounds] = rebound_leaders
  game.top_peformers[:assists] = assist_leaders
end

Public Instance Methods

games() click to toggle source
# File lib/nba_today_gem/scraper.rb, line 14
def games
  @games
end
scrape_nba_scores() click to toggle source
# File lib/nba_today_gem/scraper.rb, line 18
def scrape_nba_scores

  report do
    self.doc.css("table tbody").each do |game|
      new_nba_game = NbaTodayGem::Game.new

      new_nba_game.status = game.css("td.matchstatus.orangeText.hidedownlevel.size4.alignleft div").text
      new_nba_game.venue = game.css("td.venue.size4").text
      new_nba_game.url = "https://www.msn.com/#{game.attribute("data-link").value}"

      new_nba_game.away_team = NbaTodayGem::Team.new(game.css("td.teamname.teamlineup.alignright.size234").text)
      new_nba_game.away_team.score[0] = game.css("td.totalscore.teamlineup").text.gsub(/[\n _]/, "") # Total score
      new_nba_game.away_team.score[1] = game.css("tr:nth-child(1) td:nth-child(7)").text.gsub(/[\n _]/, "") # Quarter 1 score
      new_nba_game.away_team.score[2] = game.css("tr:nth-child(1) td:nth-child(8)").text.gsub(/[\n _]/, "") # Quarter 2 score
      new_nba_game.away_team.score[3] = game.css("tr:nth-child(1) td:nth-child(9)").text.gsub(/[\n _]/, "") # Quarter 3 score
      new_nba_game.away_team.score[4] = game.css("tr:nth-child(1) td:nth-child(10)").text.gsub(/[\n _]/, "") # Quarter 4 score

      new_nba_game.home_team = NbaTodayGem::Team.new(game.css("td.teamname.teamlinedown.alignright.size234").text)
      new_nba_game.home_team.score[0] = game.css("td.totalscore.teamlinedown").text.gsub(/[\n _]/, "") # Total score
      new_nba_game.home_team.score[1] = game.css("tr:nth-child(2) td:nth-child(5)").text.gsub(/[\n _]/, "") # Quarter 1 score
      new_nba_game.home_team.score[2] = game.css("tr:nth-child(2) td:nth-child(6)").text.gsub(/[\n _]/, "") # Quarter 2 score
      new_nba_game.home_team.score[3] = game.css("tr:nth-child(2) td:nth-child(7)").text.gsub(/[\n _]/, "") # Quarter 3 score
      new_nba_game.home_team.score[4] = game.css("tr:nth-child(2) td:nth-child(8)").text.gsub(/[\n _]/, "") # Quarter 4 score

      # scrape_nba_game_info(new_nba_game)

      #games << new_nba_game
      # CommandLineReporter progress
      progress
    end
  end
  #games
end