Нельзя скрести с упаковками Rvest и Glue - PullRequest
0 голосов
/ 15 февраля 2020

Я пытаюсь провести тест с пакетами Rvest и Glue, чтобы l oop за 17 недель футбольных данных на четырех позициях. Но у меня проблемы с заголовками столбцов на металлоломе. Вот страница, которую я пытаюсь почистить:

https://fantasy.nfl.com/research/scoringleaders?position=1&statCategory=stats&statSeason=2019&statType=weekStats&statWeek=1

У меня проблема в том, что в заголовке таблицы есть несколько объединенных ячеек, делающих это довольно неопрятно. И мне нужно создать функцию, которая использует пакет Glue для очистки этой таблицы, поскольку она применяется к каждой из 17 недель данных для четырех позиций (QB, RB, WR, TE).

Вот что я До сих пор пытался очистить функцию следующим образом:

library(tidyverse) 
library(rvest) 
library(glue) 

url <- "https://fantasy.nfl.com/research/scoringleaders?position=1&sort=pts&statCategory=stats&statSeason=2019&statType=weekStats&statWeek=1"

scrape_19 <- function(week, position) {

Sys.sleep(3)  

cat(".")

    url <- glue::glue("https://fantasy.nfl.com/research/scoringleaders?position={position}&sort=pts&statCategory=stats&statSeason=2019&statType=weekStats&statWeek={week}")
read_html(url) %>% 
  html_nodes("table") %>% 
  html_table() %>%
  purrr::flatten_df() %>%
  setNames(paste0(colnames(.), as.character(.[1,]))) %>%
  slice(-1) 
}

#test shows it all go awry
scrape_19(6, 1)

Я могу рассказать, что здесь происходит. Вызов выше (я полагаю, что функция сглаживания) объединяет два заголовка столбца вместе, но для заголовка первого ряда, такого как «Пропуск», под ним есть три заголовка второго ряда, и вызов принимает во внимание только последний из этих трех. То же самое относится и к заголовкам других строк 1.

В любом случае, я открыт для любого другого способа привести заголовки столбцов в порядок, чтобы я мог приступить к очистке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...