使用Rvest抓取包含多个表格的URL

3
我正在尝试学习如何使用rvest包进行一些爬取。我使用这个url来加载信息,并尝试获取在URL中标记为“高级”的表格信息:

enter image description here

当我试图加载信息时,我只能得到第一个表格。我的意思是,当我使用谷歌浏览器进行检查时,我看到表格中的数字被标记为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获取第一个表格,我假设我会得到所有表格的所有信息,我的下一步将是以某种方式过滤"高级"表格的值。
问候
1个回答

4

“高级”表格被隐藏在注释下面,因此它不能直接访问。我们可以使用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 ...

好的,明白了。那么每个带有注释的表格都是隐藏的吗? - GonzaloReig
是的,在那个页面的评论中有很多表格。您需要找到表格的id,并在第二个“html_nodes”中使用它来替换“#advanced”,以获取任何其他表格。 - Ronak Shah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接