Использование R для очистки данных воспроизведения - PullRequest
0 голосов
/ 27 апреля 2020

В настоящее время я пытаюсь очистить записи воспроизведения по следующей ссылке: https://www.basket.fi/basketball-finland/competitions/game/?game_id=4677793&season_id=110531&league_id=4

Я использовал SelectorGadget для определения CSS селекторов и в итоге получил '// тд. Однако когда я пытаюсь очистить данные с помощью этого, html_nodes () возвращает пустой список, и, следовательно, следующий код возвращает ошибку.

library("rvest")

url <- "https://www.basket.fi/basketball-finland/competitions/game/?game_id=4677793&season_id=110531&league_id=4"

play_by_play <- url %>% 
  read_html %>%  
  html_node(xpath='//td') %>% 
  html_table()
play_by_play

Кто-нибудь знает, как решить эту проблему?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Данные на странице, которую вы загружаете, загружаются с Javascript, поэтому, когда вы использовали read_html, вы не видите, что вы хотите. Если вы отметите «просмотреть исходный код», вы не увидите таблицу или тд на исходной странице.

Что вы можете сделать, это использовать другие параметры, такие как Rselenium, чтобы получить исходный код страницы, и если вы хотите использовать rvest позже вы можете соскрести с полученного вами источника.

library(rvest)
library(Rselenium)

url <- "https://www.basket.fi/basketball-finland/competitions/game/?game_id=4677793&season_id=110531&league_id=4"

rD<- rsDriver()

remDr <- rD$client
remDr$navigate(url)
remDr$getPageSource()[[1]]

play_by_play <-read_html(unlist(remDr$getPageSource()),encoding="UTF-8") %>%
  html_nodes("td")

remDr$close()
rm(remDr, rD)
gc()
0 голосов
/ 27 апреля 2020

Я думаю, что вы не можете получить таблицу просто потому, что на сайте нет таблицы (см. Источник). Если есть какие-либо таблицы, вы можете получить их с помощью следующего кода.

library("rvest")

url <- "https://www.basket.fi/basketball-finland/competitions/game/?game_id=4677793&season_id=110531&league_id=4"

play_by_play <- url %>% 
  read_html %>%  
  html_table() 
play_by_play

...