R - Как очистить значение из ячейки таблицы с помощью xpath? - PullRequest
0 голосов
/ 03 ноября 2018

Я работаю в R и пытаюсь почистить статистику для нескольких игроков из www.baseball-reference.com. Я был в состоянии очистить другие элементы от определенных страниц на сайте, но столкнулся с проблемами удаления из определенной таблицы, которая появляется на страницах статистики всех игроков. Идентификатор таблицы - «batting_value», а заголовок узла, который отображается на странице в виде заголовка таблицы - «Значение игрока - Ватин».

Вот пример страницы:

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

Я заинтересован в удалении значения PA из нижней строки таблицы «Player Value - Batting».

Я пробовал inspect > copy xpath, что дает мне xpath в случае URL-адреса приведенного выше примера.

//*[@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?

1 Ответ

0 голосов
/ 03 ноября 2018

Это внутри комментария, верно?

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
...