R - выскабливание с пакетом rvest - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь получить данные из таблицы «Статистика команды» на этой веб-странице:

https://www.hockey-reference.com/teams/CGY/2010.html

У меня нет большого опыта работы с веб-копированием, но я сделал несколько попыток с пакетом XML, а теперь и с пакетом rvest:

library(rvest)

url <- html("https://www.hockey-reference.com/teams/CGY/2010.html")

url %>%
        html_node(xpath = "//*[@id='team_stats']") 

И в итоге получается один узел:

{xml_node}
<table class="sortable stats_table" id="team_stats" data-cols-to-freeze="1">
[1] <caption>Team Statistics Table</caption>
[2] <colgroup>\n<col>\n<col>\n<col>\n<col>\n<col>\n<col>\n<col>\ ...
[3] <thead><tr>\n<th aria-label="Team" data-stat="team_name" sco ...
[4] <tbody>\n<tr>\n<th scope="row" class="left " data-stat="team ...

Как мне разобрать это, чтобы получить заголовок и информацию в таблице из двух строк?

1 Ответ

0 голосов
/ 03 мая 2018

Вам просто нужно добавить html_table в конце цепочки:

library(rvest)

url <- read_html("https://www.hockey-reference.com/teams/CGY/2010.html")

url %>%
  html_node(xpath = "//*[@id='team_stats']") %>% 
  html_table()

В качестве альтернативы:

library(rvest)

url %>%  
  html_table() %>% 
  .[[1]]

Оба решения возвращают:

            Team AvAge GP  W  L OL PTS  PTS%  GF  GA   SRS  SOS TG/G PP PPO   PP% PPA PPOA   PK% SH SHA    S  S%   SA   SV%   PDO
1 Calgary Flames  28.8 82 40 32 10  90 0.549 201 203 -0.03 0.04 5.05 43 268 16.04  54  305 82.30  7   1 2350 8.6 2367 0.916 100.1
2 League Average  27.9 82 41 31 10  92 0.561 233 233  0.00 0.00 5.68 56 304 18.23  56  304 81.77  6   6 2486 9.1 2479 0.911    NA
...