Web Соскоб таблицы в R - PullRequest
       16

Web Соскоб таблицы в R

0 голосов
/ 30 июня 2018

Я новичок в попытках перебора веб-страниц, и я уверен, что здесь есть очень очевидный ответ, который мне не хватает, но я исчерпал все посты, которые я могу найти по использованию rvest, XML, xml2 и т. Д. При чтении таблицы из Сеть в R, и я не имел успеха.

Пример таблицы, которую я ищу, можно найти здесь: https://www.eliteprospects.com/iframe_player_stats.php?player=364033

Я пробовал

EXAMPLE <- read_html("http://www.eliteprospects.com/iframe_player_stats.php? 
player=364033")
EXAMPLE


URL <- 'http://www.eliteprospects.com/iframe_player_stats.php?player=364033'
table <- URL %>%  
read_html %>% 
html_nodes("table") 

Но я не уверен, что делать с этими результатами, чтобы поместить их в массив данных или что-нибудь пригодное для использования.

1 Ответ

0 голосов
/ 30 июня 2018

Вам необходимо извлечь правильные html_nodes, а затем преобразовать их в data.frame. Код ниже является примером того, как сделать что-то подобное. Я нахожу Гаджет селектора очень полезным для поиска правильных селекторов CSS.

library(tidyverse)
library(rvest)

# read the html
html <- read_html('http://www.eliteprospects.com/iframe_player_stats.php?player=364033')

# function to read columns
read_col <- function(x){
  col <- html %>%  
    # CSS nodes to select by using selector gadget
    html_nodes(paste0("td:nth-child(", x, ")")) %>% 
    html_text()
  return(col)
}

# apply the function
col_list <- lapply(c(1:8, 10:15), read_col)

# collapse into matrix
mat <- do.call(cbind, col_list)

# put data into dataframe
df <- data.frame(mat[2:nrow(mat), ] %>% data.frame()) 

# assign names
names(df) <- mat[1, ] 

df
...