You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用R语言无需手动点击下载网页中的ZIP格式文件

R环境自动批量下载FDA Drugs@FDA ZIP数据文件实现方案

完全可以在R语言环境内完成全流程自动下载,不需要手动点击页面链接,具体实现方法如下:

实现逻辑

通过R包抓取目标页面上所有ZIP格式数据文件的真实下载地址,模拟正常浏览器请求批量拉取文件到本地指定目录,支持自动跳过已下载文件,重复运行不会重复拉取资源。

操作步骤

  • 安装并加载所需依赖包
    用到rvest做页面内容解析、httr处理HTTP请求,首次运行先安装依赖:
    install.packages(c("rvest", "httr", "dplyr"))
    library(rvest)
    library(httr)
    library(dplyr)
    
  • 抓取页面所有ZIP文件下载链接
    不要硬编码固定下载地址,FDA会不定期更新文件版本和存储路径,直接从页面动态抓取链接能保证拿到最新的有效地址
    # 目标数据页面地址
    page_url <- "https://www.fda.gov/drugs/drug-approvals-and-databases/drugsfda-data-files"
    # 配置浏览器标识请求头,避免被站点反爬规则拦截返回403
    req_header <- user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36")
    # 读取页面源码
    page_content <- read_html(GET(page_url, req_header))
    # 提取、清洗所有ZIP文件的完整下载链接
    zip_download_links <- page_content %>%
      html_elements("a") %>%
      html_attr("href") %>%
      # 筛选后缀为.zip的链接
      grep("\\.zip$", ., value = TRUE, ignore.case = TRUE) %>%
      # 拼接相对路径为完整可访问地址
      paste0("https://www.fda.gov", .) %>%
      # 去重
      unique()
    # 打印链接列表确认,你提到的3.54MB Drugs@FDA核心文件会在输出列表中
    print(zip_download_links)
    
  • 批量下载所有ZIP文件到本地
    # 配置本地保存目录,不存在则自动创建
    local_save_path <- "./fda_drug_data"
    if (!dir.exists(local_save_path)) {
      dir.create(local_save_path, recursive = TRUE)
    }
    # 循环下载文件
    for (url in zip_download_links) {
      # 解析文件名
      file_name <- basename(URLdecode(url))
      file_local_path <- file.path(local_save_path, file_name)
      # 跳过已下载完成的文件,避免重复消耗流量
      if (file.exists(file_local_path)) {
        message(paste("跳过已下载文件:", file_name))
        next
      }
      # 执行下载,设置60秒超时避免大文件下载中断
      GET(
        url = url,
        config = c(req_header, timeout(60)),
        write_disk(file_local_path, overwrite = FALSE)
      )
      message(paste("下载完成:", file_name))
    }
    

补充说明

  • 下载完成的ZIP文件可以直接在R内调用unzip()函数解压,不需要手动操作:unzip(zipfile = file_local_path, exdir = local_save_path)
  • 如果运行时返回403错误,优先检查请求头的浏览器标识是否配置正确,R默认的请求标识会被多数政务站点的反爬规则拦截
  • 脚本支持重复运行,不会重复下载已存在的文件,适合定期拉取FDA最新更新的数据

内容的提问来源于stack exchange,提问作者A S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 05:12:19