用R抓取webx页面的aspx网页

问题描述 投票:1回答:1

我正试图在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网页上。

真的很感激任何帮助!!

asp.net r xpath web-scraping
1个回答
-1
投票

上面的注释是正确的html代码动态填充,因此rvest库将无法正常工作。如果您在打开开发人员工具的情况下加载网页并检查下载的文件,则会有几个XHR类型的文件。如果您检查这些文件,那么名为FlightTracker.ashx的文件就是一个包含您请求的信息的JSON文件。

一旦确定了文件和curl,只需要发出httr请求并解析JSON文件:

library(httr)
library(jsonlite)

url<-'http://www.phl.org/_layouts/15/Fuseideas.PHL.SharePoint/FlightTrackerXml.ashx?dir=A'
flightdata<-GET(url)

output<- content(flightdata, as="text") %>% fromJSON(flatten=FALSE) 

仅供参考:您可能想查看此文件: 'http://www.phl.org/Style%20Library/PHL/Scripts/Angular/iata-data.jsn',其中包含有关航空公司和机场缩写,名称和链接的信息。

© www.soinside.com 2019 - 2024. All rights reserved.