2017-02-18 7 views
0

Я пытаюсь очистить данные от данных реестра от http://stats.nba.com/team/#!/1610612742/. До сих пор я пытался RCurl и XML-пакетов и код I'v пытался следующим образом:Скребковые данные от NBA.com

library(RCurl) 
library(XML) 
webpage <- getURL("http://stats.nba.com/team/#!/1610612742/") 
webpage <- readLines(tc <- textConnection(webpage)); 
pagetree <- htmlTreeParse(webpage, useInternalNodes = TRUE) 
x <- unlist(xpathApply(pagetree,"//*nba-stat-table_overflow/player",xmlValue)) 
Content <- gsub(pattern = "([\t\n])", 
      replacement = " ", x = x, ignore.case = TRUE) 

Я считаю, что моя функция xpathApply отформатирован неправильно. Какой путь я должен дать ему, чтобы попасть в таблицу реестров?

+0

Похоже, что данные загружаются с помощью JavaScript в некотором роде, а это значит, что вам нужно будет вытащить HTML с помощью чего-то вроде RSelenium, который может управлять браузером для фактического запуска необходимых скриптов. [Вот пример.] (Http://stackoverflow.com/a/41497119/4497050) Конечно, обязательно ознакомьтесь с Условиями; они достаточно щедры, но очень специфичны в отношении того, как вы можете использовать свою статистику. – alistaire

+0

Прошу прощения, это просто для задания домашней работы на веб-скребке. –

+0

Не требуется никаких извинений; это просто не самая простая страница, чтобы царапать. Википедия - это более простой сайт для занятий. – alistaire

ответ

1

Вы можете сделать это:

require(rvest) 
require(httr) 
require(purrr) 


ses <- html_session("http://stats.nba.com/team/#!/1610612742/", 
        user_agent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36")) 
doc <- ses %>% jump_to("http://stats.nba.com/stats/commonteamroster?LeagueID=00&Season=2016-17&TeamID=1610612742") 
res <- content(doc$response, "parsed") 

res$resultSets[[1]]$rowSet %>% 
    map_df(~as.data.frame(t(.))) 

#   V1 V2 V3     V4 V5 V6 V7 V8   V9 V10 V11    V12  V13 
#1 1610612742 2016 00  Justin Anderson 1 G-F 6-6 228 NOV 19, 1993 23 1   Virginia 1626147 
#2 1610612742 2016 00   J.J. Barea 5 G 6-0 185 JUN 26, 1984 32 10  Northeastern 200826 
#3 1610612742 2016 00  Andrew Bogut 6 C 7-0 260 NOV 28, 1984 32 11    Utah 101106 

res$resultSets[[2]]$rowSet %>% 
    map_df(~as.data.frame(t(.))) 

#   V1 V2  V3  V4  V5    V6    V7 V8          V9 
#1 1610612742 2016 CAR107961 Rick Carlisle  Rick Carlisle  rick_carlisle 1        Head Coach 
#2 1610612742 2016 HUN524472 Melvin  Hunt  Melvin Hunt  melvin_hunt 2      Assistant Coach 
#3 1610612742 2016 CAN081621 Kaleb Canales  Kaleb Canales  kaleb_canales 2      Assistant Coach 

Как я нашел это:

Я осмотрел все XHR звонки, что сайт сделан и обнаружил, что она нуждается в сессии (вот почему я создать используя html_session) и установить агент пользователя (не уверен, что это действительно требуется ...) без UA моего запроса застрял в течение> 30 сек ...

enter image description here

enter image description here

Смежные вопросы