我正在R中尝试从www.baseball-reference.com
抓取多个玩家的一些统计数据。我已经能够从站点上的特定页面上抓取其他元素,但是在从出现在所有玩家统计信息页面上的特定表格中抓取时遇到了问题。表ID为“ batting_value”,而表标题为“ Player Value--Batting”的页面上显示的节点标题。
这是一个示例页面:
https://www.baseball-reference.com/players/b/brownro02.shtml
我有兴趣从“玩家价值-击球”表的底行中抓取“ PA”值。
我已经尝试过inspect > copy xpath
,在上述示例网址的情况下,它为我带来了xpath
。
//*[@id="batting_value"]/tfoot/tr/td[3]
但是当我尝试使用该路径抓取时...
library(dplyr)
library(rvest)
xpath <- '//*[@id="batting_value"]/tfoot/tr/td[3]'
tables <- read_html(url)
pa <- tables %>%
html_node(xpath = xpath) %>%
html_text()
pa
[1] NA
似乎API甚至找不到节点:
tables %>%
html_node(xpath = xpath)
{xml_missing}
<NA>
为什么html_node
找不到此节点,我该如何从“玩家价值-击球”表中抓取该值?
答案 0 :(得分:2)
在评论中,对吧?
url ='https://www.baseball-reference.com/players/b/brownro02.shtml'
library(rvest)
tab = read_html(url) %>%
html_nodes(xpath = '//*[@id="all_batting_value"]//comment()') %>%
html_text() %>% read_html() %>%
html_table() %>% as.data.frame()
tab
Year Age Tm Lg G PA Rbat Rbaser Rdp Rfield Rpos RAA WAA Rrep RAR WAR waaWL. X162WL. oWAR dWAR oRAR Salary Pos
1 1999 23 CHC NL 33 70 -4 0 0 -3 0 -8 -0.8 2 -5 -0.5 0.478 0.495 -0.3 -0.3 -3 7/89
2 2000 24 CHC NL 45 98 4 0 0 0 -1 3 0.3 3 6 0.6 0.507 0.502 0.6 -0.2 7 $210,000 7/98
3 2001 25 CHC NL 39 92 2 0 0 0 -1 0 0.0 3 3 0.3 0.500 0.500 0.3 -0.2 3 $230,000 7/D98
4 2002 26 CHC NL 111 231 -11 -1 0 -3 -2 -16 -1.7 7 -9 -1.0 0.485 0.490 -0.7 -0.6 -6 $255,000 78/9D
5 4 Seasons 4 Seasons 4 Seasons 228 491 -9 -1 0 -6 -4 -21 -2.2 15 -5 -0.8 0.491 0.495 -0.1 -1.2 1 $695,000
Awards
1 NA
2 NA
3 NA
4 NA
5 NA