2014-12-01 3 views
1

Я пытаюсь получить данные игры из этого site и с помощью пакета XML, чтобы сделать так:readHTMLTable элементы разрушения пролетных

library(XML) 
url <- 'http://scores.nbcsports.msnbc.com/cbk/teamstats.asp?team=1115&report=schedule' 
raw.schedule <- readHTMLTable(url, which=2) 

Проблема заключается в том, что все <span> элементов в столбце даты HTML рушатся вместе ,

R> raw.schedule$Date[1] 
[1] "11/142:30 PM PT3:30 PM MT4:30 PM CT5:30 PM ET10:30 PM GMT6:30 PM 北京时间3:30 PM MST5:30 PM EST" 

В идеале я хотел бы иметь только элемент дата сама по себе, такие как:

R> raw.schedule$Date[1] 
    [1] "11/14" 

Я попытался rvest пакет, но я с той же проблемой. Возможно ли прочитать эту таблицу и оставить элементы <span> разделенными или просто выбрать первый элемент?

ответ

2

Определить пользовательскую функцию для разбора ячейки таблицы:

myFun <- function(x){ 
    if(length(y <- getNodeSet(x, "./span[@class=\"shsGameDate\"]")) > 0){ 
    # date column 
    return(xmlValue(y[[1]])) 
    } 
    if(length(y <- getNodeSet(x, "./span[@class=\"shsTimezone shsETZone\"]")) > 0){ 
    # time column 
    return(xmlValue(y[[1]])) 
    } 
    xmlValue(x, encoding = "UTF-8") 
} 

Теперь вы можете вызвать функцию readHTMLTable используя пользовательскую функцию для анализа клеток:

library(XML) 
url <- 'http://scores.nbcsports.msnbc.com/cbk/teamstats.asp?team=1115&report=schedule' 
raw.schedule <- readHTMLTable(url, which=2, elFun = myFun) 

> head(raw.schedule) 
    Date  Opponent  Time TV  Result 
1 11/14  vs. Yale 5:30 PM ET W 88 - 85 
2 11/18 vs. La Salle 8:00 PM ET L 58 - 60 
3 11/22 at Albany 7:00 PM ET W 76 - 73 
4 11/25 vs. Hartford 7:00 PM ET L 50 - 54 
5 11/30 vs. Vermont 1:00 PM ET W 89 - 73 
6 12/5  at Siena 7:00 PM ET  Tickets 
Смежные вопросы