【发布时间】:2017-02-09 19:35:08
【问题描述】:
我正在尝试在 R 中抓取“http://www.phl.org/Pages/Flight-Information.aspx#/Arrivals”网页,以获取费城国际机场航班的到达时间表(然后最终离开)。这是我目前写的代码:
require("rvest")
require("dplyr")
url1 <- "http://www.phl.org/Pages/Flight-Information.aspx#/Arrivals"
url2 <- '//*[@id="ctl00_pageWrapper"]/main/div[3]/table'
Trial_data <- url1 %>% read_html() %>% html_nodes(xpath=url2) %>% html_table() %>% data.frame()
但是,这只会抓取表格的标题,而不是表格数据本身。我检查了网站 HTML 代码中的网页元素,并在我的脚本中使用了 Xpath。作为一个试验,我使用相同的代码来抓取一个维基百科表格,它工作得非常好。我觉得问题出在 .aspx 网页上。
非常感谢您对此的任何帮助!
【问题讨论】:
-
据我所见,表格内容是使用 AngularJs 动态填充的,因此如果不先运行并获取 AJAX 调用的结果,这些数据可能不可用。
-
rvest 只是抓取 HTML,因此不会加载数据。您可以使用 RSelenium 加载页面(在此过程中运行任何必要的脚本),然后 rvest 进行解析,但它的工作量更大。不过,鉴于这些特定数据,我确信某处有一个 API 可以以更可用的格式公开这些相同的数据,因此下一步可能会更好地进行一些搜索。
-
...所以你的电话可以像
arrivals <- jsonlite::fromJSON('http://flightinfo.phlapi.com/direction/arrival')一样简单 -
@alistaire ,非常感谢您的回复。这将我推向正确的方向,非常感谢!
标签: asp.net r xpath web-scraping