由于表格结构非常混乱,您可能需要考虑先将该表格作为文本读取。由于我假设您可能想要刮多周,您可能需要考虑抽象出 weeknum 以便您可以在函数中使用它:
library(rvest)
library(tidyverse)
base_url <- "http://probabilityfootball.com/picks.html"
username <- "AVERAGES"
weeknum <- "21"
full_url <- paste0(base_url, "?username=", username, "&weeknum=", weeknum)
page <- read_html(full_url)
table_text <- page %>%
html_nodes("table") %>%
.[5] %>%
html_nodes("td") %>%
html_text()
table_matrix <- matrix(table_text, ncol = 9, byrow = TRUE)
col_names <- c("deadline", "kickoff", "home_team_name", "home_team_score",
"home_team_pick_pct", "score", "away_team_name", "away_team_score", "away_team_pick_pct")
colnames(table_matrix) <- col_names
result_df <- as_data_frame(table_matrix)
result_df
# # A tibble: 18 x 9
# deadline kickoff home_team_name home_team_score home_team_pick_… score away_team_name away_team_score
# <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
# 1 Sat, 12/29N… Sat, 12/29… New England 38 86% 79.40 N.Y. Giants 35
# 2 Sun, 12/30N… Sun, 12/30… Buffalo 9 25% 60.03 Philadelphia 17
# 3 Sun, 12/30N… Sun, 12/30… Carolina 31 41% -62.20 Tampa Bay 23
# 4 Sun, 12/30N… Sun, 12/30… Cincinnati 38 63% 24.52 Miami 25
# 5 Sun, 12/30N… Sun, 12/30… Dallas 6 40% 8.05 Washington 27
# 6 Sun, 12/30N… Sun, 12/30… Detroit 13 30% 46.40 Green Bay 34
# 7 Sun, 12/30N… Sun, 12/30… Jacksonville 28 55% -44.94 Houston 42
这种方法仍需要进行一些清理(例如,需要删除任何不以“星期几”开头的行,例如“tiebreaker”、“regular season...”)。