R - Web 数据



许多网站提供数据供其用户使用。例如,世界卫生组织 (WHO) 以 CSV、txt 和 XML 文件的形式提供健康和医疗信息报告。

使用 R 程序,我们可以以编程方式从此类网站中提取特定数据。R 中一些用于从 Web 上抓取数据的包是 − “RCurl”、XML“ 和 ”stringr”。它们用于连接到 URL,识别文件所需的链接并将其下载到本地环境。

安装 R 软件包

处理 URL 和文件链接需要以下包。如果它们在 R 环境中不可用,您可以使用以下命令安装它们。

install.packages("RCurl")
install.packages("XML")
install.packages("stringr")
install.packages("plyr")

输入数据

我们将访问 URL 天气数据并使用 R 下载 2015 年的 CSV 文件。

我们将使用函数 getHTMLLinks() 来收集文件的 URL。然后我们将使用函数 download.file() 将文件保存到本地系统。由于我们将对多个文件一次又一次地应用相同的代码,因此我们将创建一个要多次调用的函数。文件名以 R 列表对象的形式作为参数传递给此函数。


# 读取URL。
url <- "http://www.geos.ed.ac.uk/~weather/jcmb_ws/"

# 收集网页中存在的html链接。
links <- getHTMLLinks(url)

# 仅识别指向JCMB 2015文件的链接。
filenames <- links[str_detect(links, "JCMB_2015")]

# 将文件名存储为列表。
filenames_list <- as.list(filenames)

# 创建一个函数,通过传递URL和文件名列表来下载文件。
downloadcsv <- function (mainurl,filename) {
   filedetails <- str_c(mainurl,filename)
   download.file(filedetails,filename)
}

# 现在应用l_ply函数并将文件保存到当前R工作目录中。
l_ply(filenames,downloadcsv,mainurl = "http://www.geos.ed.ac.uk/~weather/jcmb_ws/")

验证文件下载

运行上述代码后,您可以在当前 R 工作目录下找到以下文件。

"JCMB_2015.csv" "JCMB_2015_Apr.csv" "JCMB_2015_Feb.csv" "JCMB_2015_Jan.csv"
   "JCMB_2015_Mar.csv"