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
相关产品推荐
相关产品推荐

