R/scrape_player_card.R

#' @title Scrape Player Card
#' @param save default is TRUE, saves file to raw_data folder
#' @description This function allows you to scrape basic info for each player in the NBA
#' @keywords NBA basketball-reference
#' @importFrom magrittr %>%
#' @export
#' @examples
#' scrape_player_card()


#add column of playerid
scrape_player_card <- function(save = TRUE) {

  base_url <- 'https://www.basketball-reference.com/'

  players <- data.frame(player_name=character(),
                        init_season=integer(),
                        final_season=integer(),
                        position=character(),
                        height=character(),
                        weight=integer(),
                        dob=character(),
                        colleges=character(),
                        stringsAsFactors=FALSE)

  player_links <- c()

  for (letter in letters) {
    url <- paste0(base_url, "players/", letter)
    page <- readUrl(url)

    if (!is.na(page)) {
      player_table <- rvest::html_table(page,fill=T)[[1]] %>%
        dplyr::rename(player_name = Player,
               init_season = From,
               final_season = To,
               position = Pos,
               height = Ht,
               weight = Wt,
               dob = `Birth Date`,
               colleges = Colleges) %>%
        dplyr::mutate(player_name = tolower(gsub("\\*","",player_name)))

      players <- players %>%
        dplyr::bind_rows(player_table)

      lnks <- page %>%
        rvest::html_nodes("tr a") %>%
        rvest::html_attr("href")

      lnks <- lnks[grep("/players/", lnks)]

      player_links <- c(player_links,lnks)
    }

    print(letter)
  }

  players$links <- player_links

  if(save==TRUE) {
    utils::write.csv(players, file = "data-raw/player_card.csv", row.names = FALSE)
  }

  return(players)
}
emilykuehler/basketballstatsR documentation built on May 31, 2019, 10:01 a.m.