Проблема с селектором CSS со статистикой rvest и NHL - PullRequest
0 голосов
/ 05 мая 2018

Я хочу почистить данные с hockey-reference.com, а именно по этой ссылке:

https://www.hockey -reference.com / лиги / NHL_1991.html

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

Изначально я хочу, чтобы очистка работала со ссылкой 1991 года, но я хочу со временем очистить каждую ссылку с 1991 по 2017 год.

library(tidyverse)
library(rvest)

stat_urls <- "https://www.hockey-reference.com/leagues/NHL_1991.html"

Прямо сейчас, у меня есть только ссылка 1991 года, для простоты. Кажется, я не могу найти правильный выбор CSS, хотя я пробовал несколько разных, после довольно тщательного поиска, используя источник "inspect" фактической веб-страницы. Я пробовал следующие варианты CSS:

table#stats.sortable.stats_table.now.sortable
#stats
#all_stats
#all_stats > div.table_outer_container
#stats
#stats > tbody
#div_stats (and all sorts of combos with this one)

Ничего из этого не работает, если используется в следующем коде:

team_stats <- stat_urls %>% 
 read_html() %>%
 html_nodes("#stats") %>% 
 html_table(header = T)

Все попытки с "xpath =" также не увенчались успехом. Любая помощь с этим была бы абсолютно феноменальной, и впереди!


1 Ответ

0 голосов
/ 07 мая 2018

Вы можете попробовать использовать RSelenium. Видел похожий ответ здесь: Web Scraping Basketball Reference с использованием R .

library(rvest)
library(RSelenium)
startServer() 
remDr<-remoteDriver(browserName = "chrome")
remDr$open()

remDr$navigate("https://www.hockey-reference.com/leagues/NHL_1991.html")
page <- read_html(remDr$getPageSource()[[1]])
table <- html_table(page, fill = TRUE)
table[[28]]

Хотя установка селена - это больно, и я бы попытался помочь с этим, но я установил его некоторое время назад, так что не помню. Удачи


От парня, который разместил оригинальный вопрос:

Приведенный выше ответ сработал, но мне пришлось пройти через Homebrew:

https://brew.sh/

И тогда мне пришлось использовать следующий код:

Использование Selenium на Mac Chrome

# download selenium jar
curl -L0 https://selenium-release.storage.googleapis.com/3.9/selenium- 
server-standalone-3.9.1.jar -o selenium-server-standalone.jar

# install chromedriver
brew install chromedriver

# start chrome driver
brew services start chromedriver                                                                                                                                                                      
#==> Successfully started `chromedriver` 
(label:homebrew.mxcl.chromedriver)

# start selenium server
java -jar selenium-server-standalone.jar                                                                                                                                                                           
#14:38:20.684 INFO - Selenium build info: version: '3.9.1', revision: 
'63f7b50'
#14:38:20.685 INFO - Launching a standalone Selenium Server on port 
4444
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...