【问题标题】:Extracting HTML table into R将 HTML 表格提取到 R 中
【发布时间】:2015-08-15 02:54:05
【问题描述】:

我一直在尝试从网页中提取表格。该数据是来自实时航班跟踪网站(https://flightaware.com/live/flight/WJA1508/history/20150814/1720Z/CYYC/KSFO/tracklog)的航班跟踪数据。

我已经尝试过 XML、RCurl 和 Curl 包,但没有成功。我相信很可能是因为我不知道如何避免 SSL 以及包含航班状态注释的列(即,表格顶部的前两个和底部的第三个)。

谁能知道如何提取这个表 int R?

【问题讨论】:

  • 如果您分享您迄今为止尝试过的内容,效果会更好。
  • 他们有一个API (是的)是付费的,但这可能就是为什么他们在flightaware.com/about/termsofuse 的第 6 项中明确告诉您抓取违反了 ToS。

标签: html xml r html-parsing rcurl


【解决方案1】:

正如上面 cmets 中的 @hrbrmstr 所指出的,这违反了 FlightAware 的 TOS,但是您对代码的处理是您的业务。 :) 使用 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)" ...

【讨论】:

  • 非常感谢,阿甘!这正是我想做的:)
  • 不客气,我过去曾与这些细节作斗争,很高兴有一个良好的工作起点。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2013-07-10
  • 2015-09-10
  • 1970-01-01
  • 2011-01-28
  • 2023-01-04
  • 1970-01-01
相关资源
最近更新 更多