Очистите URL с несколькими таблицами с помощью Rvest - PullRequest
3 голосов
/ 06 ноября 2019

Я пытаюсь научиться делать утилизацию с помощью пакета rvest. Я использую этот url для загрузки информации, и я пытаюсь получить информацию о таблице, помеченной как "продвинутая" в URL:

enter image description here

Когда я пытаюсь загрузить информацию, я могу получить только первую таблицу. Я имею в виду, когда я проверяю с помощью Google Chrome, я вижу, что числа в таблице помечены как class = "right". Вот что я попробовал:

library(rvest)
library(stringr)

url = url("https://www.basketball-reference.com/players/l/leonaka01.html")

read = html_nodes(read_html(url),
                         '.right')

read2 = str_replace_all(html_text(read), 
                     "[\r\n\t]" , "")

Я вижу, что read - это список из 351 значений. Итак, он обнаружил 351 значение, помеченное как правильное. Если я получу последний, read2 [351], я вижу «29.3», которое является последним значением первой таблицы.

Итак ... как я могу получить информацию о других таблицах? Я никогда не говорил R получить первую таблицу, я предполагал, что получу всю информацию обо всех таблицах, и моим следующим шагом будет как-то отфильтровать значения таблицы «Advanced».

С уважением

1 Ответ

4 голосов
/ 06 ноября 2019

Таблица «Дополнительно» скрыта под комментариями, поэтому она не доступна напрямую. Мы можем собрать все комментарии, используя xpath, а затем проанализировать таблицу из нее.

library(rvest)
url = "https://www.basketball-reference.com/players/l/leonaka01.html"

url %>%
  read_html %>%
  html_nodes(xpath = '//comment()') %>%
  html_text() %>%
  toString() %>%
  read_html() %>%
  html_node('table#advanced') %>%
  html_table() 

#      Season Age  Tm  Lg Pos   G    MP  PER   TS%  3PAr   FTr ORB% ...
#1    2011-12  20 SAS NBA  SF  64  1534 16.6 0.573 0.270 0.218  7.9 ...
#2    2012-13  21 SAS NBA  SF  58  1810 16.4 0.592 0.331 0.240  4.3 ...
#3    2013-14  22 SAS NBA  SF  66  1923 19.4 0.602 0.282 0.195  4.6 ...
#4    2014-15  23 SAS NBA  SF  64  2033 22.0 0.567 0.234 0.307  4.8 ...
#5    2015-16  24 SAS NBA  SF  72  2380 26.0 0.616 0.267 0.306  4.7 ...
#6    2016-17  25 SAS NBA  SF  74  2474 27.6 0.610 0.295 0.406  3.7 ...
#7    2017-18  26 SAS NBA  SF   9   210 26.0 0.572 0.315 0.342  3.1 ...
#8    2018-19  27 TOR NBA  SF  60  2040 25.8 0.606 0.267 0.377  4.2 ...
#9    2019-20  28 LAC NBA  SF   6   183 35.1 0.572 0.230 0.319  5.5 ...
#10    Career  NA     NBA     473 14587 22.8 0.599 0.276 0.318  4.8 ...
#11            NA              NA    NA   NA    NA    NA    NA   NA ...
#12 7 seasons  NA SAS NBA     407 12364 22.1 0.597 0.279 0.305  4.8 ...
#13  1 season  NA TOR NBA      60  2040 25.8 0.606 0.267 0.377  4.2 ...
#14  1 season  NA LAC NBA       6   183 35.1 0.572 0.230 0.319  5.5 ...
...