R语言中通过.aspx链接下载.xls文件,readxl读取时解析失败
解决readxl读取xls文件时的libxls解析错误
你遇到的libxls error: Unable to parse file错误,核心原因是你下载的file.xls根本不是真正的Excel文件——目标URL返回的是网页HTML内容,而非二进制的xls文件。
验证问题
你可以直接打开下载的file.xls,会看到里面是网页代码;也可以用R代码查看文件类型:
file.info("file.xls")
正确的解决方案
方案1:用rvest抓取网页表格数据
目标页面是数据展示网页,直接抓取页面内的表格即可:
# 安装并加载rvest包 install.packages("rvest") library(rvest) # 抓取网页内容 url <- "https://www.cepea.esalq.usp.br/br/indicador/series/boi-gordo.aspx?id=2" page <- read_html(url) # 提取表格(跳过前3行无关内容) df <- page %>% html_element("table") %>% html_table(header = TRUE, skip = 3)
方案2:获取真实的Excel下载链接
如果网站提供Excel下载按钮,打开浏览器开发者工具(F12),找到下载按钮对应的href属性,获取真实的Excel文件URL,再用download.file下载。示例代码如下:
download.file("真实的Excel文件URL", "real_file.xls", mode = "wb") df <- read_excel("real_file.xls", sheet = 1, skip = 3)
内容的提问来源于stack exchange,提问作者Rodrigo
相关产品推荐
相关产品推荐

