Class: NbaStats::Scraper

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

Class Method Summary collapse

Class Method Details

.assign_teams(teams, conference) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/nba_stats/scraper.rb', line 16

def self.assign_teams(teams, conference)
  assigned_teams = []
  teams.each do |team|
    name = team.text
    team_url = "http://www.basketball-reference.com" + team["href"]
    hash = {name: name, team_url: team_url, conference: conference}
    assigned_teams << hash unless assigned_teams.include? hash
  end
  assigned_teams
end

.get_player_stats(player) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/nba_stats/scraper.rb', line 46

def self.get_player_stats(player)
  page = open_page(player.player_url)

  season = page.css("table#per_game tr.full_table").last
  stats_array = season.text.split("\n").map {|x| x.strip}
  stats_hash = {
    points_pg: stats_array[30], 
    assists_pg: stats_array[25], 
    rebounds_pg: stats_array[24], 
    blocks_pg: stats_array[27], 
    steals_pg: stats_array[26], 
    minutes_pg: stats_array[8], 
    fg_percentage: stats_array[11], 
    three_percentage: stats_array[14], 
    ft_percentage: stats_array[21]
  }

end

.get_roster(team) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/nba_stats/scraper.rb', line 27

def self.get_roster(team)
  page = open_page(team.team_url)
  players_array = []
  players = page.css("table#roster tr")
  players.drop(1).each do |player|
    data_array = player.text.split("\n").map {|x| x.strip}
    number = data_array[1]
    name = data_array[2]
    position = data_array[3]
    height = data_array[4]
    data_array[8] == "R" ? experience = "Rookie" : experience = data_array[8] + " Years"
    player_url = "http://www.basketball-reference.com" + player.css("a").first["href"]

    hash = {name: name, number: number, position: position, height: height, experience: experience, player_url: player_url}
    players_array << hash
  end
  players_array
end

.get_teamsObject



7
8
9
10
11
12
13
14
# File 'lib/nba_stats/scraper.rb', line 7

def self.get_teams
  page = open_page("http://www.basketball-reference.com/leagues/NBA_2016_standings.html")

  east_teams = page.css("table#E_standings td a")
  west_teams = page.css("table#W_standings td a")

  assign_teams(west_teams, "West") + assign_teams(east_teams, "East")
end

.open_page(url) ⇒ Object



3
4
5
# File 'lib/nba_stats/scraper.rb', line 3

def self.open_page(url)
  Nokogiri::HTML(open(url))
end