【问题标题】:How to webscrape data in R that is not available in page source?如何在 R 中抓取页面源中不可用的数据?
【发布时间】:2019-02-20 08:54:00
【问题描述】:

我正在尝试在 R 中为 flightradar 上的特定机场抓取数据,例如,https://www.flightradar24.com/data/airports/axa

具体来说,我想抓取到达和离开表的内容并将它们存储在数据框中。看起来很简单,但表格的内容不是 html 页面源代码。

我尝试在 Chrome 上使用 css 选择器,并使用 rvest 函数确定了适当的 css 选择器,但它不会为我提供正确的结果。例如,在尝试使用 tr td 作为 css 选择器来节省时间时,我尝试过:

library(rvest) webpage <- read_html("https://www.flightradar24.com/data/airports/axa") time <- html_nodes(webpage, "tr td") %>% html_text() head(time)

[1]“正在加载...”
[2]“抱歉,我们没有关于此机场航班的任何信息”
[3] " {{objFlight.flight.status.generic.eventTime.utc * 1000 || '' | 日期:timeFormat: timeZone}} {{objFlight.flight.time.scheduled.arrival * 1000 || '-' |日期:timeFormat:timeZone}} {{objFlight.flight.identification.number.default}} {{objFlight.flight.airport.origin.position.region.city}}({{objFlight.flight.airport.origin.code. iata}}) {{objFlight.flight.aircraft.model.code || '-'}}{{objFlight.flight.aircraft.registration}}{{objFlight.flight.airline.name}} -" [4] "{{objFlight.flight.time.scheduled.arrival * 1000 || '-' | 日期: timeFormat : timeZone}}"
[5] "{{objFlight.flight.identification.number.default}}"
[6]“{{objFlight.flight.airport.origin.position.region.city}}({{objFlight.flight.airport.origin.code.iata}})-”

显然,结果并不理想,因为它应该是航班实际时间的列表。我不知道从这里去哪里。

感谢任何帮助。

【问题讨论】:

  • 在浏览器中打开开发者工具。刷新页面。您会看到 “Welcome to axa \n 请注意,抓取或任何其他形式的自动数据下载违反了我们的服务条款 (flightradar24.com/terms-and-conditions),并可能导致无法访问 Flightradar24。\n 请如果您希望访问我们的数据服务,请联系 business@fr24.com。”。任何帮助您的人都可能会因此而面临风险(这并不酷)。您现在已经收到一封电子邮件,可用于查看您是否可以合法访问数据服务。
  • 感谢您向我指出这一点,我没有看到。在继续之前,我会确保联系他们的服务。

标签: html r web-scraping rvest


【解决方案1】:

我已经能够使用以下代码获取表格:

library(RSelenium)
library(XML)
shell('docker run -d -p 4445:4444 selenium/standalone-firefox')
remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4445L, browserName = "firefox")
remDr$open()
remDr$navigate("https://www.flightradar24.com/data/airports/axa")
Sys.sleep(10)

page_Content <- remDr$getPageSource()[[1]]
readHTMLTable(page_Content)

【讨论】:

    猜你喜欢
    • 2017-04-08
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多