Соскоб с Rvest не работает должным образом - PullRequest
0 голосов
/ 28 июня 2018

Я хочу почистить вторую основную таблицу на этой странице: https://www.hockey -reference.com / Players / f / forsbfi01.html , таблица "Метрики владения НХЛ". Rvest должен позволить мне сделать это легко:

fil_link <- "https://www.hockey-reference.com/players/f/forsbfi01.html"

fil_pos <- fil_link %>% 
 read_html %>% 
 html_node(css = "#skaters_advanced") %>% 
 html_table(header = T)

Но я получаю эту ошибку:

Error in UseMethod("html_table") : 
  no applicable method for 'html_table' applied to an object of class 
  "xml_missing"

Я получил первую таблицу с практически тем же кодом, в то же время меняя код CSS. Кроме того, я просмотрел код таблицы, проверил, чтобы убедиться, что я получаю фактический селектор таблиц, а не контейнер, внутренности и т. Д. Почему это не будет очищать?

1 Ответ

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

Это решило бы проблему для этой конкретной таблицы. Но учтите, что это очень хрупкое решение. Предполагается, что матричная структура состоит только из 3 строк, и предполагается, что все строки имеют одинаковое количество элементов.

library(tidyverse)
library(rvest)

## Create a function to parse every row in the table.
Hockey_table <- function(htmlObject) { 

  titlerow <- htmlObject %>% html_nodes(xpath = '//div[@class="stats_pullout"]/div/div/h4') %>%  html_text('data-tip')
  firstrow <- htmlObject %>% html_nodes(xpath = '//div[@class="stats_pullout"]/div/div/p[1]') %>% html_text()
  secondrow <- htmlObject %>% html_nodes(xpath = '//div[@class="stats_pullout"]/div/div/p[2]') %>% html_text()

  data.frame(titlerow, firstrow, secondrow)

}

 Page01 <- read_html('https://www.hockey-reference.com/players/f/forsbfi01.html')
Hockey_table(Page01)

Результаты:

   titlerow firstrow secondrow
 1   SUMMARY  2017-18    Career
 2        GP       67       331
 3         G       26       117
 4         A       38       138
 5       PTS       64       255
 6       +/-       27        26
 7        PS      8.3      32.1
 8       PIM       38       145
 9        SH      179       931
 10      GWG        6        24
 11      TOI    17:28     17:49
 12      CF%     53.0      54.9
 13     oZS%     54.1      63.4
...