如何用R语言下载FAERS的ASCII文件并解压至工作目录?
使用R批量下载并解压FAERS ASCII文件最优方案
以下是高效实现批量下载FAERS所有ASCII压缩文件并解压到当前工作目录的R代码方案,核心采用网页爬取+批量处理思路,兼顾稳定性与简洁性:
步骤1:安装并加载依赖包
需要用到网页爬取、HTTP请求和批量操作的工具包:
# 首次运行需执行安装 install.packages(c("rvest", "httr", "purrr")) # 加载所需包 library(rvest) library(httr) library(purrr)
步骤2:爬取所有ASCII压缩文件链接
从FAERS文件页面提取所有ASCII格式压缩包的下载链接:
# FAERS文件页面地址 faers_url <- "https://fis.fda.gov/extensions/FPD-QDE-FAERS/FPD-QDE-FAERS.html" # 解析页面并筛选目标链接 page <- read_html(faers_url) ascii_links <- page %>% html_elements("a") %>% html_attr("href") %>% # 匹配FAERS ASCII压缩包的命名规则 grep(pattern = "ASCII.*\\.zip$", x = ., value = TRUE) %>% # 补全相对路径为完整URL url_absolute(faers_url)
步骤3:批量下载并解压文件
遍历所有链接,自动完成下载与解压,同时处理可能的异常情况:
# 定义单文件处理函数 download_unzip_faers <- function(link) { file_name <- basename(link) tryCatch({ # 下载文件到当前目录 GET(link, write_disk(file_name, overwrite = TRUE)) message(paste("下载完成:", file_name)) # 解压文件到当前目录 unzip(file_name, exdir = getwd()) message(paste("解压完成:", file_name)) }, error = function(e) { message(paste("处理失败:", file_name, ",错误信息:", e$message)) }) } # 批量执行所有文件的下载解压 walk(ascii_links, download_unzip_faers)
关键说明
- 工作目录确认:执行前可通过
getwd()查看当前工作目录,如需切换路径用setwd("你的目标路径") - 重复下载控制:代码中
overwrite = TRUE会覆盖已存在的同名文件,若需保留旧文件可改为FALSE - 网络异常处理:若遇到下载中断,重新运行
walk代码块即可自动重试未成功的文件 - 压缩包清理:如果不需要保留原始zip文件,可在解压步骤后添加
file.remove(file_name)删除压缩包
内容的提问来源于stack exchange,提问作者Jenn0804
相关产品推荐
相关产品推荐

