R语言download.file无法打开URL报错求助
解决R中download.file无法访问URL的格式错误问题
问题背景
浏览器可正常打开并自动下载CSV文件的URL,在RStudio中通过download.file调用时抛出格式错误,且代码在同事环境可正常运行。
报错原因
URL参数中submit= Download+Data存在未编码的空格:浏览器会自动将URL中的空格编码为%20以符合HTTP规范,但R默认的download.file客户端不会自动处理这类非法字符,导致URL格式校验失败。同事环境可能默认使用了支持自动编码的下载方法(如curl),或他们的URL已被提前修正。
解决方案
方案1:手动移除无效空格
直接删除submit=后的空格,修正后的代码:
url <- "http://climate.weather.gc.ca/climate_data/bulk_data_e.html?format=csv&stationID=6329&Year=1953&Month=1&Day=1&timeframe=2&submit=Download+Data" download.file(url, "files.csv", quiet = TRUE)
方案2:自动URL编码
使用R内置的URLencode()函数对原URL编码,自动转换非法字符:
url <- "http://climate.weather.gc.ca/climate_data/bulk_data_e.html?format=csv&stationID=6329&Year=1953&Month=1&Day=1&timeframe=2&submit= Download+Data" encoded_url <- URLencode(url) download.file(encoded_url, "files.csv", quiet = TRUE)
方案3:指定下载方法
若系统已安装curl(Linux/macOS默认自带,Windows需单独安装),可指定method="curl",curl会自动处理URL中的非法字符:
url <- "http://climate.weather.gc.ca/climate_data/bulk_data_e.html?format=csv&stationID=6329&Year=1953&Month=1&Day=1&timeframe=2&submit= Download+Data" download.file(url, "files.csv", quiet = TRUE, method = "curl")
内容的提问来源于stack exchange,提问作者Jacob Bauer
相关产品推荐
相关产品推荐

