无法使用 R(RCurl 包)访问 HTML 站点的目录

Unable to access directory of HTML site using R (RCurl package)

我正在尝试使用 R 中的 RCurl 包访问以下天气数据的 http 目录:

http://ncei.noaa.gov/data/global-summary-of-the-day/access/

每年的每个目录中都有一个唯一的气象站列表。

我可以像这样访问任何特定的数据集

url = 'http://ncei.noaa.gov/data/global-summary-of-the-day/access/1932/03005099999.csv'
data = read.csv(url)

但是,我无法在不知道每个目录中有哪些文件的情况下自动执行此过程。我试过使用 RCurl 包来获取其中所有文件的列表,但总是出现错误:

url = 'http://ncei.noaa.gov/data/global-summary-of-the-day/access/'
getURL(url)

这给了我以下输出,说明地址已更改(到 https 地址)

[1] "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>301 Moved Permanently</title>\n</head><body>\n<h1>Moved Permanently</h1>\n<p>The document has moved <a href=\"https://ncei.noaa.gov/data/global-summary-of-the-day/access/\">here</a>.</p>\n</body></html>\n"

将地址更改为 https url 指示会出现此错误

url = 'https://ncei.noaa.gov/data/global-summary-of-the-day/access/'
getURL(url)

Error in function (type, msg, asError = TRUE) : error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version

我尝试将 https: 替换为 ftps: 和 ftp: 这样做会出现超时错误。

对打印目录有什么想法吗?

我认为这里的问题是服务器仅支持使用 TLS 1.2 版和您的 RCurl does not support it.

的请求

您可以使用 httrrvest 实现您想要的效果。例如,要获取列出 1929 目录中文件的小标题:

library(httr)
library(rvest)

url1 <- "https://www.ncei.noaa.gov/data/global-summary-of-the-day/access/1929"
page_data <- GET(url1)

files <- content(page_data, as = "parsed") %>%
  html_table() %>%
  .[[1]]

files

# A tibble: 24 x 4
   Name               `Last modified`    Size  Description
   <chr>              <chr>              <chr> <lgl>      
 1 ""                 ""                 ""    NA         
 2 "Parent Directory" ""                 "-"   NA         
 3 "03005099999.csv"  "2019-01-19 12:37" "20K" NA         
 4 "03075099999.csv"  "2019-01-19 12:37" "20K" NA         
 5 "03091099999.csv"  "2019-01-19 12:37" "17K" NA         
 6 "03159099999.csv"  "2019-01-19 12:37" "20K" NA         
 7 "03262099999.csv"  "2019-01-19 12:37" "20K" NA         
 8 "03311099999.csv"  "2019-01-19 12:37" "19K" NA         
 9 "03379099999.csv"  "2019-01-19 12:37" "33K" NA         
10 "03396099999.csv"  "2019-01-19 12:37" "21K" NA         
# ... with 14 more rows