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

R脚本报错:无适用于xml_missing类的html_table方法求助

问题解决:R脚本因网页结构变更无法运行

错误原因

你遇到的xml_missing错误,本质是目标网站的HTML结构在2021年后发生了变化——原来用来定位表格的CSS选择器.pad5已经不存在了,导致html_node找不到对应元素,后续的html_table自然无法处理一个"缺失"的对象。

修正步骤与代码

1. 替换失效的CSS选择器

现在访问波兰国家银行的汇率页面,表格的定位方式已经改变,我们可以用更通用的表格选择器,直接提取页面中的汇率表格。

2. 避免全局赋值(<<-)

原代码使用<<-修改全局变量,这不是好的编程习惯,建议让函数直接返回处理好的数据框。

修正后的代码如下:

library(rvest)
library(stringr)

cleaning <- function() {
  # 读取网页
  file_html <- read_html("https://www.nbp.pl/homen.aspx?f=/kursy/RatesA.html", encoding = "UTF-8")
  
  # 定位当前页面的汇率表格(替换原失效的.pad5选择器)
  table_html <- html_element(file_html, "table.table")
  
  # 转换为数据框
  table_r <- html_table(table_html, fill = TRUE, dec = ",")
  
  # 清理列名
  currencies <- data.frame(table_r)
  colnames(currencies) <- c("currency_name", "currency_code", "mid_rate")
  
  # 返回结果
  return(currencies)
}

# 调用函数并查看结果
result <- cleaning()
print(result)

额外说明

  • 如果后续网页结构再次变更,你可以打开目标页面,按F12调出开发者工具,找到表格元素,右键复制其CSS选择器,替换代码中的"table.table"即可。
  • 尽量避免使用<<-,它会污染全局环境,函数应该通过返回值传递结果,更安全易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:54:17