我正在尝试学习如何使用rvest软件包进行一些剪贴。我正在使用此url加载信息,并且试图获取URL中标记为“高级”的表的信息:
当我尝试加载信息时,我只能获得第一个表。我的意思是,当我使用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]" , "")
我看到的是读取的是351个值的列表。好的,就是他检测到351个标记为正确的值。如果得到最后一个read2 [351],则会看到“ 29.3”,它是第一个表的最后一个值。
那么...如何获取有关其他表的信息?我从未告诉过R获取第一个表,我以为我会获得所有表的所有信息,而我的下一步就是以某种方式过滤“高级”表值。
致谢
答案 0 :(得分: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 ...