【问题标题】:R - How to scrape value from a table cell using xpath?R - 如何使用 xpath 从表格单元格中刮取值?
【发布时间】:2018-11-03 05:23:01
【问题描述】:

我在 R 中工作,试图从 www.baseball-reference.com 中获取多个玩家的一些统计数据。我已经能够从网站上的特定页面中抓取其他元素,但是在从所有玩家统计页面上出现的特定表格中抓取时遇到了问题。表格 id 是“batting_value”,页面上显示为表格标题的节点标题是“Player Value--Batting”。

这是一个示例页面:

https://www.baseball-reference.com/players/b/brownro02.shtml

我有兴趣从“Player Value--Batting”表的底行抓取“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 没有找到这个节点,我该如何从 Player Value--Batting 表中抓取这个值?

【问题讨论】:

  • 请编辑您的代码并删除所有&gt;,以便其他人更容易复制和粘贴

标签: r xpath web-scraping rvest


【解决方案1】:

在评论里面吧?

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    相关资源
    最近更新 更多