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

如何从IOM指定URL下载Excel格式移民数据并直接导入R

错误原因

你当前代码的逻辑是爬取HTML页面提取下载链接,但你传入的URL已经是最终的Excel文件直链,不存在HTML结构,所以read_html()会直接解析失败,后续的节点选择操作也没有意义。你不需要额外爬取解析,直接基于该直链下载读取即可。

解决方案

方案1:先下载到本地再导入

适合需要留存本地文件的场景:

# 未安装依赖包先执行:install.packages("readxl")
library(readxl)

# 定义Excel文件直链
xlsx_url <- "https://migration.iom.int/system/tdf/datasets/Q2%202021%20Mixed%20Migration%20Flows%20to%20Europe%20%28April%20-%20June%202021%29.xlsx?file=1&type=node&id=12261"

# 下载文件到本地,Windows系统必须加mode = "wb"避免二进制文件损坏
download.file(xlsx_url, destfile = "2021年第二季度欧洲混合移民流动数据.xlsx", mode = "wb")

# 读取本地Excel,可通过sheet参数指定对应工作表
mig_data <- read_excel("2021年第二季度欧洲混合移民流动数据.xlsx", sheet = 1)

方案2:直接内存读取,不生成本地文件

适合不需要留存源文件的场景:

# 未安装依赖包先执行:install.packages(c("readxl", "httr", "magrittr"))
library(readxl)
library(httr)
library(magrittr)

xlsx_url <- "https://migration.iom.int/system/tdf/datasets/Q2%202021%20Mixed%20Migration%20Flows%20to%20Europe%20%28April%20-%20June%202021%29.xlsx?file=1&type=node&id=12261"

# 直接读取网络文件二进制内容到内存解析
mig_data <- GET(xlsx_url) %>% 
  content(what = "raw") %>% 
  read_excel(sheet = 1)

补充说明

如果读取时提示工作表不存在,可以先用excel_sheets(文件路径/二进制内容)查看所有工作表名称,再替换sheet参数的取值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:45:04