2015-08-15 5 views
0

Я пытался извлечь таблицу с веб-страницы. Данные являются данными по траектории полета с веб-сайта отслеживания прямых рейсов (https://flightaware.com/live/flight/WJA1508/history/20150814/1720Z/CYYC/KSFO/tracklog).Извлечение таблицы HTML в R

Я пробовал XML, RCurl и Curl пакеты, но я не работал. Я считаю, скорее всего, потому, что я не мог понять, как избежать SSL, а также столбцы, содержащие примечания о статусе полета (то есть первые два из верхней и третьей из нижней части таблицы).

Может ли кто-нибудь знать, как извлечь эту таблицу int R?

+0

Он работает лучше, если вы разделяете, что вы пробовали до сих пор. –

+1

У них есть [API] (http://flightaware.com/commercial/flightxml/pricing_class.rvt), что (да) - это платная вещь, но, вероятно, именно поэтому они явно говорят вам в пункте 6 http : //flightaware.com/about/termsofuse, что соскабливание является нарушением ToS. – hrbrmstr

ответ

1

Как отмечено в комментариях к @hrbrmstr, это нарушает TOS FlightAware, но то, что вы делаете с кодом, является вашим бизнесом. :) Это вы должны получить большую часть пути туда с помощью rvest пакета:

library(rvest) 

u <- "https://flightaware.com/live/flight/WJA1508/history/20150814/1720Z/CYYC/KSFO/tracklog" 

html_read <- html(u) 
tbl <- html_table(
    html_nodes(html_read, "table"), 
    fill=TRUE, 
    header=FALSE, 
    trim=TRUE 
)[[2]] 

## Subset to the first row of data and remove all extra 
## columns: 
tbl_o <- tbl[6:nrow(tbl), ] 
tbl_o <- tbl_o[,colSums(is.na(tbl_o))!=nrow(tbl_o)] 

names(tbl_o) <- c(
    "Time", "Lat", "Lon", 
    "Course", "Direction", 
    "KTS", "MPH", "Alt", 
    "Rate", "Location" 
) 

str(tbl_o) 

Что дает:

'data.frame': 292 obs. of 10 variables: 
$ Time  : chr "Fri 01:41:34 PM" "Fri 01:48:59 PM" "Fri 01:49:14 PM" "Fri 01:50:05 PM" ... 
$ Lat  : chr "51.0833" "51.1551" "51.1683" "51.2235" ... 
$ Lon  : chr "-113.9667" "-114.0209" "-114.0209" "-114.0220" ... 
$ Course : chr "335°" "0°" "0°" "358°" ... 
$ Direction: chr "Northwest" "North" "North" "North" ... 
$ KTS  : chr "20" "201" "219" "149" ... 
$ MPH  : chr "23" "231" "252" "171" ... 
$ Alt  : chr "3,500" "4,900" "5,200" "6,800" ... 
$ Rate  : chr "" "222" "1,727" "1,701" ... 
$ Location : chr "Edmonton Center" "FlightAware ADS-B (CYYC)" "FlightAware ADS-B (CYYC)" "FlightAware ADS-B (CEG2)" ... 
+0

Огромное вам спасибо, Форрест! Это именно то, что я хотел сделать :) – Emad

+0

Вы очень желанны, я боролся с этими подробностями в прошлом, приятно иметь хорошую отправную точку для работы. :) –

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